如何覆盖“默认”导航栏?

时间:2015-11-06 12:52:56

标签: ios storyboard interface-builder uinavigationbar

在我的iOS应用程序中,我的故事板上有以下视图控制器导航方案

  

导航控制器 - > ViewController A - > ViewController B

我可以在View Controller A上自定义导航栏,但我在界面构建器上设计的自定义导航栏不会显示View Controller B。它只显示“后退”按钮。

我可以在界面构建器上为“内部”视图定义自定义导航栏吗?我知道我可以以编程方式进行,但如果我能避免它,那就更好了。

1 个答案:

答案 0 :(得分:3)

我认为你可能错过了理解中的一个重要因素。 UINavigationBar拥有的UINavigationController仅仅是每个视图控制器UINavigationItem的容器。使用此导航项添加/删除特定于每个视图控制器的按钮。

使用您自己的示例:

  

UINavigationController(在其导航栏中显示每个视图控制器的导航项) - > UIViewController A(包括UINavigationItem A,它有自己的按钮) - > UIViewController B(包括UINavigationItem B,它有自己的按钮)

如果要隐藏后退按钮,可以通过在每个视图控制器或视图控制器的超类中添加以下行来实现:

self.navigationItem.hidesBackButton = true

如果您希望所有视图控制器具有相同的按钮,则最好创建一个UIViewController基类并以编程方式将正确的按钮添加到导航项。确保所有视图控制器都继承自这个新的子类。

希望这有帮助!