【发布时间】:2015-08-22 19:23:58
【问题描述】:
我有三个视图控制器,我希望它们具有相同的导航栏,但我无法找到在这三个视图之间“共享”导航栏的方法。是否有更有效的方法将导航控制器与视图控制器链接起来,这样即使导航控制器完全相同,我也没有三个不同的导航控制器?
此外,我还有一个标签栏控制器,如果这有什么不同的话。
图片说明:
【问题讨论】:
标签: ios swift uinavigationcontroller uitabbarcontroller
我有三个视图控制器,我希望它们具有相同的导航栏,但我无法找到在这三个视图之间“共享”导航栏的方法。是否有更有效的方法将导航控制器与视图控制器链接起来,这样即使导航控制器完全相同,我也没有三个不同的导航控制器?
此外,我还有一个标签栏控制器,如果这有什么不同的话。
图片说明:
【问题讨论】:
标签: ios swift uinavigationcontroller uitabbarcontroller
正如 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
}
【讨论】:
你需要使用 UIAppearance。
[[UINavigationBar appearance] setTintColor: color];
【讨论】:
您正在使用情节提要,根据您的描述,您不需要三个导航控制器。相反,通过从一个到下一个 ctrl 拖动来连接三个 UIViewControllers 以创建推送 segue。不要使用UIAppearance 代理;只需在导航控制器的rootViewController 的viewDidLoad 方法中设置自定义栏的外观。
【讨论】: