如何覆盖 "default" 导航栏?

How to override "default" navigation bar?

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

Navigation Controller -> ViewController A -> ViewController B

我可以在 View Controller A 上自定义导航栏,但是我在 Interface Builder 上设计的自定义导航栏没有显示在 View Controller B 上。它只显示 "back" 按钮。

我可以在界面生成器上为 "inner" 视图定义自定义导航栏吗?我知道我可以通过编程方式做到这一点,但如果我能避免它,那就更好了。

我认为您在理解过程中可能遗漏了一个重要因素。 UINavigationController 拥有的 UINavigationBar 只是每个视图控制器的 UINavigationItem 的容器。将此导航项用于 add/remove 个特定于每个视图控制器的按钮。

使用您自己的示例:

UINavigationController (displays each view controller's navigation item inside its navigation bar) -> UIViewController A (includes UINavigationItem A, which has its own buttons) -> UIViewController B (includes UINavigationItem B, which has its own buttons)

如果你想隐藏后退按钮,你可以通过在每个视图控制器或你的视图控制器的 superclass:

中添加以下行来实现

self.navigationItem.hidesBackButton = true

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

希望对您有所帮助!