我想设置导航栏右侧的公共栏按钮项,它应该显示在导航控制器管理的所有屏幕上,并且它会调用相同的动作。
例如,在Master Detail Application模板中,有" addButton"在导航栏的右侧,我也希望在DetailViewController上显示它(它不会起作用,因为它虽然缺少动作)。
我已经创建了UINavigationController的子类,我可以在其中更改导航栏颜色等内容,但我无法设置Bar Button Items。我可以在每个屏幕的ViewController中设置条形按钮项目,这样我就必须为每个屏幕复制动作。
此外,我还尝试创建UINavigationBar的子类,但我不知道是否可以在其上添加Bar Button Item。
如何在导航栏上设置公共栏按钮项?
提前致谢。
答案 0 :(得分:5)
另一种简单的方法,而不是创建扩展
在根视图控制器中实现UINavigationControllerDelegate
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) {
let backBarButton = UIBarButtonItem.init(title: "HINIBO", style: .Plain, target: self, action: Selector("menuButtonAction:"))
viewController.navigationItem.rightBarButtonItem = backBarButton
}
答案 1 :(得分:3)
您可以使用类别来接近它。我们说UIViewController+NavigationBar
类别
1.创建一个类别
2.在-(void)setNavigationBarItem
文件中添加方法.h
方法(在本例中)。
3.实现.m
文件中的方法来处理设置的Bar Button Items。
- (void)setNavigationBarItem
{
UIBarButtonItem *searchItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(something)];
self.navigationItem.rightBarButtonItem = searchItem;
}
4.在哪个viewController中你需要NavigationBarItem,导入类别标题并调用[self setNavigationBarItem]
方法。