【问题标题】:Why does a segmented control hide when using a TabBarController?为什么使用 TabBarController 时分段控件会隐藏?
【发布时间】:2016-10-08 21:50:22
【问题描述】:

我想在 iOS 上的 UITabBarController 选项卡内使用分段控件。没有它似乎可以工作,但是一旦我将它嵌入到 TabBarController 中,分段控件就不会显示在导航栏中。

是我遗漏了什么,还是因为某些 UI 指南而不受支持?我没有在 Apple 设计指南中找到任何内容...

这是工作版本:

但在此设置中,分段控件不显示:

【问题讨论】:

    标签: ios uitabbarcontroller uisegmentedcontrol


    【解决方案1】:

    第一个问题是:你想实现什么——你想提供什么接口?

    在导航控制器中嵌入标签栏控制器是非常少见的。 标签栏控制器旨在用作主应用程序导航。您可以在许多 Apple 应用(音乐、电话等)中找到它

    这些应用有一个带有多个导航控制器的标签栏控制器。例如,您的第一个选项卡是一个导航控制器,其根目录为普通视图控制器。

    在此控制器中,您可以设置分段控制。

    Apple 在其 Combined View Controller Interfaces 文档 (https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/CombiningViewControllers.html#//apple_ref/doc/uid/TP40011313-CH6-SW1) 中描述了这种行为。

    更新

    @kaushal 回答解决了您的问题……是的。但是,如果您尝试为选项卡视图控制器中包含的每个视图控制器设置导航栏的样式(也许您只想为一个视图控制器添加一个按钮为 rightBarButtonItem),这将不起作用。

    如果您想在选项卡视图控制器的每个控制器上使用分段控件,只需隔离此控件的代码并在每个控制器中重用它即可。

    这将达到相同的效果,但您将拥有更简洁的软件设计。

    【讨论】:

      【解决方案2】:

      试试这个:

      导航栏是常见的抛出堆栈,它会加载一次。第一次看到它是空的。如果你想为特定的 VC 定制它,那么你必须通过在视图中访问 self.NavigationBar 以编程方式完成加载方法。

      【讨论】:

      • 感谢四位您的回答,我想这是我问题的答案。但是,我将遵循@orschaef 对情节提要进行根本性更改的建议。这似乎是更好的方法:)
      猜你喜欢
      • 2011-02-22
      • 2016-08-03
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      相关资源
      最近更新 更多