Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 跨多个视图共享导航栏的最佳方式?_Ios_Swift_Uinavigationcontroller_Uitabbarcontroller - Fatal编程技术网

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

Ios 跨多个视图共享导航栏的最佳方式?,ios,swift,uinavigationcontroller,uitabbarcontroller,Ios,Swift,Uinavigationcontroller,Uitabbarcontroller,我有三个视图控制器,我想有相同的导航栏上,但我不能想出一种方法来“共享”这三个视图之间的导航栏。是否有更有效的方法将导航控制器与视图控制器连接起来,这样即使导航控制器完全相同,也不会有三个不同的导航控制器 此外,我有一个选项卡栏控制器,如果这有区别的话 要澄清的图片: 您需要使用UIAppearance 正如Ch0k0I8所提到的,UIAppearance是在整个应用程序中设置通用UI主题的好方法 如果要在导航控制器之间查找相同的功能,则应将UINavigationController子类化,

我有三个视图控制器,我想有相同的导航栏上,但我不能想出一种方法来“共享”这三个视图之间的导航栏。是否有更有效的方法将导航控制器与视图控制器连接起来,这样即使导航控制器完全相同,也不会有三个不同的导航控制器

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

要澄清的图片:


您需要使用UIAppearance


正如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
}

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

您可以使用UIApearance协议在应用程序中拥有一致的UI。如果不是你的情况,那就错了。除了颜色,我希望保持相同的功能(即导航栏中的按钮);我能用UIAppearance做到这一点吗?我为我的noobishness道歉(我内心是一个Android程序员),但你所说的UINavController“subclass[ing]”是什么意思?我还对如何在故事板中创建自定义导航栏控制器和更新我的答案感到困惑。如果您是Android程序员,那么您应该熟悉子类化。制作Android和iOS应用程序非常相似,大部分都基于面向对象编程。因此,我基本上仍然需要为每个视图添加单独的导航控制器?在故事板中,是的,您将需要单独的导航控制器。但这只是一个点击和拖动。没什么大不了的。我还需要三个独立的导航控制器吗?@jacobblatin绝对不需要。我编辑了我的答案。导航控制器控制或包含通过应用程序的流程,使其包含的每个场景都可以进入下一个场景。
class CustomNavController: UINavigationController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // do whatever custom setup stuff you want here
    }

    // override other methods for different customizations
}