为什么在使用 TabBarController 时分段控件会隐藏?

Why does a segmented control hide when using a TabBarController?

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

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

这是工作版本:

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

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

在导航控制器中嵌入选项卡栏控制器的情况很少见。 标签栏控制器旨在用作主应用程序导航。您可以在众多 Apple 应用程序(音乐、Phone 等)中找到它

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

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

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),这将不起作用。

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

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

试试这个:

导航栏是common throughout the stack,它会加载一次。第一眼看到它是空的。如果您希望它针对特定的 VC 进行自定义,那么您必须通过访问 self.NavigationBar 以编程方式在 view did load 方法中进行。