3

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

结果,标签栏显示在每个视图下方。

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

当前流程如下图所示:

有流的故事板

所需导航示例

例如,“第二视图”应该与导航控制器一起显示,因为它是选项卡栏控制器的直接子级。

在此处输入图像描述

但是,“第三视图”和“第四视图”应该只有导航控制器(没有标签栏):

在此处输入图像描述

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

在此处输入图像描述

不建议的解决方案

在此处输入图像描述

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

  • 无法再重新排列选项卡栏控制器中的选项卡,因为它们会消失
  • 无法从情节提要中为“第二视图”设置导航标题
  • 编辑器>嵌入>导航控制器对于标签栏控制器是灰色的(因为它不是推荐的做法),所以你必须手动创建它
4

1 回答 1

4

UIViewController有财产hidesBottomBarWhenPushed。将其设置为trueinviewDidLoad和。ThirdViewControllerFourthViewController

更新

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

更新 2

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

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

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

在此处输入图像描述

于 2017-01-13T22:32:41.880 回答