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

时间:2015-08-22 19:23:59

标签: ios swift uinavigationcontroller uitabbarcontroller

我有三个视图控制器,我想要使用相同的导航栏,但我无法找到一种方法来分享"分享"这三个视图之间的导航栏。是否有更有效的方法将导航控制器与视图控制器连接起来,这样即使导航控制器完全相同,我也没有三个不同的导航控制器?

此外,如果有所不同,我有一个标签栏控制器。

图片澄清:

enter image description here

3 个答案:

答案 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)

答案 2 :(得分:0)

您正在使用故事板,而根据您的描述,您不需要三个导航控制器。相反,通过ctrl-dragging将三个UIViewControllers连接到下一个以创建推送segue。不要使用UIAppearance代理;只需在导航控制器的rootViewController viewDidLoad方法中设置自定义栏的外观即可。