如何覆盖 "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.
希望对您有所帮助!
在我的 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 (includesUINavigationItem
A, which has its own buttons) ->UIViewController
B (includesUINavigationItem
B, which has its own buttons)
如果你想隐藏后退按钮,你可以通过在每个视图控制器或你的视图控制器的 superclass:
中添加以下行来实现self.navigationItem.hidesBackButton = true
如果您希望所有视图控制器都具有相同的按钮,您最好创建一个 UIViewController
基础 class 并以编程方式将适当的按钮添加到导航项。确保你所有的视图控制器继承自这个新的 subclass.
希望对您有所帮助!