繁体   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