【问题标题】:Best way to share nav bar across multiple views?跨多个视图共享导航栏的最佳方式?
【发布时间】:2015-08-22 19:23:58
【问题描述】:

我有三个视图控制器,我希望它们具有相同的导航栏,但我无法找到在这三个视图之间“共享”导航栏的方法。是否有更有效的方法将导航控制器与视图控制器链接起来,这样即使导航控制器完全相同,我也没有三个不同的导航控制器?

此外,我还有一个标签栏控制器,如果这有什么不同的话。

图片说明:

【问题讨论】:

标签: ios swift uinavigationcontroller uitabbarcontroller


【解决方案1】:

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

【讨论】:

  • 我为我的笨拙表示歉意(我是一名 Android 程序员),但是 UINavController 的“子类[ing]”是什么意思?我也对如何在情节提要中制作自定义导航栏控制器感到困惑
  • 更新了我的答案。如果您是 Android 程序员,那么您应该熟悉子类化。制作 Android 和 iOS 应用程序非常相似,大部分都是基于面向对象的编程。
  • 所以我基本上还需要为每个视图添加一个单独的导航控制器?
  • 在故事板中,是的,您需要单独的导航控制器。但这只是一个点击和拖动。没什么大不了的。
【解决方案2】:

【讨论】:

  • 您可以使用 UIApearance 协议在您的应用程序中拥有一致的 UI。如果不是你的情况,那就错了。
  • 除了颜色之外,我希望保持相同的功能(即导航栏中的按钮);我可以用 UIAppearance 做到这一点吗?
【解决方案3】:

您正在使用情节提要,根据您的描述,您不需要三个导航控制器。相反,通过从一个到下一个 ctrl 拖动来连接三个 UIViewControllers 以创建推送 segue。不要使用UIAppearance 代理;只需在导航控制器的rootViewControllerviewDidLoad 方法中设置自定义栏的外观。

【讨论】:

  • 我还需要三个独立的导航控制器吗?
  • @JacobPlatin 绝对不是。我编辑了我的答案。导航控制器控制或包含通过应用程序的流程,以便它包含的每个场景都连接到下一个场景。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 2010-11-01
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多