妥善管理导航栏和标签栏
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,这样您就不必写下任何代码。
图中显示了我的故事板,按照指示进行了转场。
在tabBar的落地viewcontroller(即I)中,tabBar和navBar都可见,这是需要的。但是,如果执行 segue(从 I)转到另一个 viewcontroller(这里是 II),我只需要导航栏。我可以使用
隐藏 tabBarself.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,这样您就不必写下任何代码。