跨多个视图共享导航栏的最佳方式?
Best way to share nav bar across multiple views?
我有三个视图控制器,我希望它们具有相同的导航栏,但我想不出一种方法来 "share" 这三个视图之间的导航栏。有没有更有效的方法 link 使用视图控制器来增加导航控制器,这样即使导航控制器完全相同,我也没有三个不同的导航控制器?
此外,我有一个选项卡栏控制器,如果有区别的话。
图片说明:
您需要使用 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
代理;只需在导航控制器的 rootViewController
的 viewDidLoad
方法中设置自定义栏的外观。
我有三个视图控制器,我希望它们具有相同的导航栏,但我想不出一种方法来 "share" 这三个视图之间的导航栏。有没有更有效的方法 link 使用视图控制器来增加导航控制器,这样即使导航控制器完全相同,我也没有三个不同的导航控制器?
此外,我有一个选项卡栏控制器,如果有区别的话。
图片说明:
您需要使用 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
代理;只需在导航控制器的 rootViewController
的 viewDidLoad
方法中设置自定义栏的外观。