将 UINavigationController 添加到 UITabBarController,而不在所有视图中显示标签栏

Add UINavigationController to UITabBarController without Tab Bar showing up in all views

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

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

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

当前流程如图所示:

所需导航示例

例如,"Second View" 应该与导航控制器一起显示,因为它是标签栏控制器的直接 child。

但是,"Third View" 和 "Fourth View" 应该只有导航控制器(没有标签栏):

实际(带标签栏)与预期(期望的结果是没有标签栏的视图):

Un-suggested解决方案

获得所需流程的一种可能方法是创建导航控制器,然后将其连接到选项卡栏控制器。然而,Apple 不推荐将此作为 UI 模式(Apple 文档建议使用上述方法),并导致几个细微的错误:

UIViewController 有一个 属性 hidesBottomBarWhenPushed。在 ThirdViewControllerFourthViewControllerviewDidLoad 中将其设置为 true

更新

您当前的视图控制器层次结构完全没问题。不要将其更改为其他任何内容。

更新 2

你是对的 viewDidLoad 不够好。使用 init?(coder:).

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

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