我想要
视图控制器1:显示标签栏
视图控制器2:显示标签栏
视图控制器3:未显示标签栏。
我写
// prepareForSegue in view controller 1,
let upcoming = segue.destinationViewController as! viewcontroller3
upcoming.hidesBottomBarWhenPushed = true
// prepareForSegue in view controller 3,
let upcoming = segue.destinationViewController as! viewcontroller2
self.hidesBottomBarWhenPushed = true
当我从视图控制器1查看控制器3时,未显示标签栏。然后,我从视图控制器3查看控制器2,显示标签栏。但是当我在视图控制器2中点击时,标签栏显示在视图控制器3中.self.hidesBottomBarWhenPushed = true
对我没有意义。但是,我无法想象我应该做些什么来解决这个问题。有什么建议?谢谢。
编辑:That解决了这个问题。
显示标签栏是有意义的,因为当从VC2单击回VC3时,没有任何东西告诉VC3隐藏其标签栏。
我认为你有2个解决方案(但没有测试过):
self.tabBarController?.tabBar.hidden = true
或ViewDidLoad
中执行viewWillAppear
隐藏标签栏的方法是 - 在您推动下一个视图控制器的位置执行此操作:
self.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(controllerToPush, animated: true)
self.hidesBottomBarWhenPushed = false
这将确保为推出的视图隐藏标签栏,当您弹回时,该栏将再次显示。没有后退按钮逻辑,没有viewDidLoad或类似,没有别的。这应该足够了。
同样适用于objective-c
现在(21/02/2018)您还可以在故事板中查看您不想显示底栏的每个控制器的选项。这将有助于清理代码,您无需在控制器中设置任何内容.
@stan几乎是正确的答案。正如他所提到的,如果你想隐藏底栏,你想设置hidesBottomBarWhenPushed = true
。但是,您应该按控制器将其设置在控制器上,如下所示。
controllerToPush.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(controllerToPush, animated: true)