[英]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.