我有三个视图控制器,我想要使用相同的导航栏,但我无法找到一种方法来分享"分享"这三个视图之间的导航栏。是否有更有效的方法将导航控制器与视图控制器连接起来,这样即使导航控制器完全相同,我也没有三个不同的导航控制器?
此外,如果有所不同,我有一个标签栏控制器。
图片澄清:
答案 0 :(得分:4)
正如Ch0k0I8所述,UIAppearance
是在整个应用中设置通用UI主题的好方法。
如果您在导航控制器之间寻找相同的功能,那么您应该继承UINavigationController
并在那里实现常用功能。然后,您可以在故事板中使用自定义导航控制器,也可以在您希望的3个位置使用代码。要将自定义子类放在故事板中,请像往常一样将UINavigationController
拖到故事板上,然后在实用程序选项卡中将类更改为自定义导航控制器类。以下是自定义UINavigationController
子类的外观:
class CustomNavController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
// do whatever custom setup stuff you want here
}
// override other methods for different customizations
}
答案 1 :(得分:2)
您需要使用UIAppearance。
[[UINavigationBar appearance] setTintColor: color];
答案 2 :(得分:0)
您正在使用故事板,而根据您的描述,您不需要三个导航控制器。相反,通过ctrl-dragging将三个UIViewControllers
连接到下一个以创建推送segue。不要使用UIAppearance
代理;只需在导航控制器的rootViewController
viewDidLoad
方法中设置自定义栏的外观即可。