将UINavigationController添加到UITabBarController,而不显示所有视图中的Tab Bar

时间:2017-01-13 22:18:27

标签: ios uistoryboard uitabcontroller

我目前有带导航控制器的标签栏控制器,described here

因此,标签栏显示在每个视图下方。

有没有办法使用Storyboard隐藏连接屏幕上没有直接连接到标签栏控制器的标签栏。

目前的流程如下图所示:

storyboard with flow

所需导航的示例

例如," Second View"应该与导航控制器一起显示,因为它是Tab Bar Controller的直接子项。

enter image description here

然而,"第三视图"和#34;第四视图",应该只有导航控制器(没有标签栏):

enter image description here

实际(使用标签栏)与预期结果(所需结果是没有标签栏的视图):

enter image description here

未建议的解决方案

enter image description here

获得所需流量的一种可能方法是创建导航控制器,然后将其连接到Tab Bar Controller。但是,Apple不建议将其作为UI模式(Apple文档建议使用上述方法),并导致一些微妙的错误:

  • 无法再重新排列标签栏控制器中的标签,因为它们消失了
  • 无法为"第二视图"设置导航标题来自故事板
  • 编辑器>嵌入>选项卡栏控制器的导航控制器显示为灰色(因为它不是推荐的做法),因此您必须手动创建它

1 个答案:

答案 0 :(得分:2)

UIViewController有一个属性hidesBottomBarWhenPushed。将其设置为true viewDidLoadThirdViewController中的FourthViewController

<强>更新

您当前的视图控制器层次结构完全正常。不要把它换成其他任何东西。

更新2

你正确viewDidLoad还不够好。使用init?(coder:)

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    hidesBottomBarWhenPushed = true
}

或者在Interface Builder中设置一个标志。

enter image description here