如何在导航栏上设置常用的栏按钮项目

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
}