妥善管理导航栏和标签栏

Properly manage nav bar and tab bar

图中显示了我的故事板,按照指示进行了转场。

在tabBar的落地viewcontroller(即I)中,tabBar和navBar都可见,这是需要的。但是,如果执行 segue(从 I)转到另一个 viewcontroller(这里是 II),我只需要导航栏。我可以使用

隐藏 tabBar
self.tabBarController?.tabBar.isHidden = true

接下来,我可以通过在开头添加导航控制器来达到预期的效果,如下所示。

此配置将在前面的 viewcontroller 中添加一个导航栏(如初始屏幕),因此我将不得不隐藏那些 viewcontroller 中的导航栏。

是否有其他方法不需要隐藏条形并达到预期效果?

您应该采用第一种方法。标签栏控制器默认 属性 隐藏底部栏。请参阅下面的示例代码。

    ViewController *viewController = [[ViewController alloc] init];
viewController.hidesBottomBarWhenPushed = YES;  // This property needs to be set before pushing viewController to the navigationController's stack. 
[self.navigationController pushViewController:viewController animated:YES];

这将在推送到任何子控制器时隐藏您的标签栏。

编辑

您还可以为标签栏控制器设置故事板中的 hidesBottomBarwhenpushed,这样您就不必写下任何代码。