跨多个视图共享导航栏的最佳方式?

Best way to share nav bar across multiple views?

我有三个视图控制器,我希望它们具有相同的导航栏,但我想不出一种方法来 "share" 这三个视图之间的导航栏。有没有更有效的方法 link 使用视图控制器来增加导航控制器,这样即使导航控制器完全相同,我也没有三个不同的导航控制器?

此外,我有一个选项卡栏控制器,如果有区别的话。

图片说明:

您需要使用 UIAppearance。

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIAppearance_Protocol/index.html#//apple_ref/occ/intf/UIAppearance

[[UINavigationBar appearance] setTintColor: color];

正如 Ch0k0I8 提到的,UIAppearance 是在整个应用程序中设置通用 UI 主题的好方法。

如果您正在寻找导航控制器之间的相同功能,那么您应该子class UINavigationController 并在那里实现通用功能。然后,您可以在情节提要中或在您希望的 3 个位置的代码中使用您的自定义导航控制器。要将自定义 subclass 放入情节提要中,请像往常一样将 UINavigationController 拖到情节提要中,然后在实用程序中将 class 更改为您的自定义导航控制器 class标签。这是自定义 UINavigationController subclass 的样子:

class CustomNavController: UINavigationController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // do whatever custom setup stuff you want here
    }

    // override other methods for different customizations
}

您使用的是故事板,根据您的描述,您不需要三个导航控制器。相反,通过按住 ctrl 键从一个拖到下一个来连接三个 UIViewControllers 以创建推送转场。不要使用 UIAppearance 代理;只需在导航控制器的 rootViewControllerviewDidLoad 方法中设置自定义栏的外观。