簡體   English   中英

將項添加到NavigationBar(不使用UINavigationController)

[英]Add items to NavigationBar (Not using UINavigationController)

我有一個帶有UITableView的UIViewController,還添加了一個UINavigationBar。 如何以編程方式在該欄中添加和“編輯”按鈕和“+”按鈕? (我嘗試過使用IB,但標題總是被替換,而不是添加其他項目)我沒有使用UINavigationController。 是我的UIViewController獨自站立。

這是我嘗試過沒有成功的:

UIBarButtonItem *barButton = 
    [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStyleBordered 
                                                  target:nil
                                                  action:nil];
UINavigationItem *editItem = [[UINavigationItem alloc] initWithTitle:@"Title"];
[editItem setLeftBarButtonItem:barButton animated:YES];
[navigationBar setItems:[NSArray arrayWithObject:editItem] animated:YES];

您的UIViewController具有navigationItem屬性。 您可以使用self.navigationItem.leftBarButtonItem = ...self.navigationItem.rightBarButtonItem = ...設置左右欄按鈕項目self.navigationItem.rightBarButtonItem = ...

編輯:

好的,我假設您有對UINavigationBar的引用? 然后我猜你要為它添加一個UINavigationItem

UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"A Title"];
theNavigationBar.items = [NSArray arrayWithObject:item];
[item release]; // or keep this as an instance variable

然后設置該項的左右按鈕:

theNavigationBar.topItem.leftBarButtonItem = ...;
theNavigationBar.topItem.rightBarButtonItem = ...;

我沒有試過這個,但我認為它應該有效。

UIBarButtonItem *leftBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(theEditMethod:)];      
[viewController.navigationItem setLeftBarButtonItem:leftBarButton animated:NO];
[leftBarButton release];

UIBarButtonItem *rightBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(theAddMethod:)];       
[viewController.navigationItem setLeftBarButtonItem:rightBarButton animated:NO];
[rightBarButton release];

喲不需要將UINavigationItem添加到UINavigationBar。 喲可以這樣做:

NSString *backButtonTittle=[NSString stringWithFormat:@"< %@",NSLocalizedString(@"backButton", nil)];
UIBarButtonItem *backCreateAccountNavBarItem=[[UIBarButtonItem alloc]initWithTitle:backButtonTittle style:UIBarButtonItemStylePlain target:self action:@selector(goToBackStep)];
self.createAccountNavBar.topItem.leftBarButtonItem=backCreateAccountNavBarItem;

只需使用viewController的navigationItem屬性即可。

像這樣:

 self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(updateContent)];

導航欄項目/按鈕,在Swift 4.2,ios 11,XCode 10上執行操作

1)使用Storyboard轉到編輯器>嵌入> 導航欄

2)在AppDelegate> didFinishLaunchingWithOptions中

UINavigationBar.appearance().barTintColor = UIColor(hexString: "1C9B90")
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]

3)在viewcontroller的viewDidLoad上 ,創建按鈕並添加到導航欄:

self.navigationController?.navigationBar.topItem?.title = "Title"
self.navigationController?.isNavigationBarHidden = false

//QR Code button
let qrCodeScanButton = UIButton(type: .custom)
qrCodeScanButton.setImage(UIImage(named: "camera"), for: .normal)
qrCodeScanButton.addTarget(self, action: #selector(self.searchWithQRCode), for: .touchUpInside)
let qrCodeScanButtonItem = UIBarButtonItem(customView: qrCodeScanButton)

///LogOut button
let logoutButton = UIButton(type: .custom)
logoutButton.setImage(UIImage(named: "logOut"), for: .normal)
logoutButton.addTarget(self, action: #selector(self.logOut), for: .touchUpInside)
let logoutButtonItem = UIBarButtonItem(customView: logoutButton)

self.navigationController?.navigationBar.topItem?.setRightBarButtonItems([logoutButtonItem, qrCodeScanButtonItem], animated: true)

4)按鈕的動作:

@objc func logout(){
     ///present your Login VC
}

@objc func qrCodeScanButton(){
     ///present your Login VC
}

5)構建和運行

PS。 請記住這兩個不同之處。

isNavigationBarHidden :一個布爾值,指示導航欄是否隱藏。

self.navigationController?.isNavigationBarHidden

navigationBar.isHidden :導航控制器管理的導航欄。

self.navigationController?.navigationBar.isHidden

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM