我想要一个没有 UITabBar 的 UITabBarController

Posted

技术标签:

【中文标题】我想要一个没有 UITabBar 的 UITabBarController【英文标题】:I'd like to have a UITabBarController, with no UITabBar 【发布时间】:2013-07-31 13:12:57 【问题描述】:

我正在构建类似于 iPad 上的 UISplitView 的东西。但是“主”面板会有按钮,而不是列表。

详细信息面板最多有 7 个不同的屏幕(对应于主窗格中的按钮)。

所以,我想做的是在 InterfaceBuilder 中构建一个 UITabBarController(除了它易于查看之外没有其他原因)。但是在“主”视图中按下的每个按钮都会告诉标签栏控制器显示不同的面板。

这可以做到吗,还是这种方法很愚蠢?我想我可以创建一个容器视图,并进出视图控制器。但是在 IB 中使用 UITabBarController 可以很明显(视觉上)这些视图都是相互连接的。

感谢您的建议。

【问题讨论】:

【参考方案1】:

我做了同样的事情,但我无法以干净合法的方式隐藏标签栏。

所以,我决定改变方法:仅使用 Storyboard 中的 UITabBar 作为连接的“占位符”并填充我的 SplitController 的 viewControllers 数组,然后在加载我的 SplitController 时,以编程方式从 Storyboard 加载 UITabBarController,复制 viewControllers 数组的内容,最后关闭 UITabBarController。

使用这种方法,您只需管理一个 VC 和另一个 VC 之间的转换,但您将:

可以从情节提要中设置viewControllers(恕我直言,这是最好的部分) 可以使用tabBarItem 作为菜单控制器的图标

所以,更简单地说:

使用NSArray* viewControllers 实例变量创建您的SplitController 实例 您可以将initWithTabBarController: 实例方法添加到您的SplitController 并传递以编程方式加载的tabBarController 实例。 在initWithTabBarController 方法中,使用tabBarController.viewControllers 属性填充viewControllers 数组。现在您可以“丢弃”您的标签栏控制器实例,您不需要它 您必须自己管理从一个控制器到另一个控制器的转换。为此,我建议您使用带有容器视图控制器的主视图。

我认为这种方法有一个干净易读的故事板很好,我正在更新我的所有项目以使用它。

问候 法比奥

【讨论】:

以上是关于我想要一个没有 UITabBar 的 UITabBarController的主要内容,如果未能解决你的问题,请参考以下文章

带有 UITabBar 的 UITabBarController 功能

ios标签栏点击显示模态视图黑屏

自定义颜色的 UITabBar 图标

在 UITabbar 上方使用 UIToolbar - 有可能吗?

iOS didSelectTabBarItem 知道之前选择了啥项目

在 UITabBar 控制器上设置图像