如何在导航栏上设置常用的栏按钮项目
How to set common Bar Button Item on Navigation Bar
我想在 Navigation Bar 的右侧设置通用的 Bar Button Item,它应该显示在 Navigation Controller 管理的所有屏幕上,并且它调用相同的操作。
举个例子,在Master Detail Application模板中,Navigation Bar右边有"addButton",我想在DetailViewController上也显示(不会工作,因为虽然缺少操作)。
我创建了 UINavigationController 的子类,我可以在其中更改导航栏颜色等内容,但无法设置栏按钮项。我可以在每个屏幕的 ViewController 中设置栏按钮项目,这样我就必须为每个屏幕重复操作。
我也试过创建 UINavigationBar 的子类,但我不知道是否可以在其上添加 Bar Button Item。
如何在导航栏上设置常用的Bar Button Item?
提前致谢。
您可以使用类别来处理它。假设 UIViewController+NavigationBar
类别
1.Create一个类别
2.Add 一个方法,-(void)setNavigationBarItem
方法(在本例中)在 .h
文件中。
3.implement .m
文件中的方法来处理设置栏按钮项目的东西。
- (void)setNavigationBarItem
{
UIBarButtonItem *searchItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(something)];
self.navigationItem.rightBarButtonItem = searchItem;
}
4.In 您想要 viewController NavigationBarItem,导入类别 header 并调用 [self setNavigationBarItem]
方法。
另一种无需创建扩展的简单方法
在根视图控制器中实现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
}
我想在 Navigation Bar 的右侧设置通用的 Bar Button Item,它应该显示在 Navigation Controller 管理的所有屏幕上,并且它调用相同的操作。
举个例子,在Master Detail Application模板中,Navigation Bar右边有"addButton",我想在DetailViewController上也显示(不会工作,因为虽然缺少操作)。
我创建了 UINavigationController 的子类,我可以在其中更改导航栏颜色等内容,但无法设置栏按钮项。我可以在每个屏幕的 ViewController 中设置栏按钮项目,这样我就必须为每个屏幕重复操作。
我也试过创建 UINavigationBar 的子类,但我不知道是否可以在其上添加 Bar Button Item。
如何在导航栏上设置常用的Bar Button Item?
提前致谢。
您可以使用类别来处理它。假设 UIViewController+NavigationBar
类别
1.Create一个类别
2.Add 一个方法,-(void)setNavigationBarItem
方法(在本例中)在 .h
文件中。
3.implement .m
文件中的方法来处理设置栏按钮项目的东西。
- (void)setNavigationBarItem
{
UIBarButtonItem *searchItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(something)];
self.navigationItem.rightBarButtonItem = searchItem;
}
4.In 您想要 viewController NavigationBarItem,导入类别 header 并调用 [self setNavigationBarItem]
方法。
另一种无需创建扩展的简单方法
在根视图控制器中实现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
}