顾名思义,hiddenBottomBarWhenPushed仅在需要时隐藏底部栏,而不会取消隐藏bottomBar。您可以执行以下操作使其生效:
override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) self.tabBarController?.tabBar.hidden = true/false}
或者干脆把self.tabBarController?.tabBar.hidden = true/false在prepareForSegue
但是我不建议您这样做,因为bottomBar突然弹出会很奇怪,用户会以为它们突然回到了rootViewController而不是。
用户应始终知道他们在应用中的位置以及如何到达下一个目的地。
解决方法答案:在每个视图控制器中使用self.tabBarController?.tabBar.hidden而不是hidesBottomBarWhenPushed来管理视图控制器是否应显示选项卡栏。
override func viewWillAppear(animated: Bool) { self.tabBarController?.tabBar.hidden = true/false}
我想要
视图控制器1:应显示选项卡栏
视图控制器2:应显示标签栏
视图控制器3:不应显示选项卡栏。
视图控制器4:不应显示选项卡栏。
我写
// prepareForSegue in view controller 1,let upcoming = segue.destinationViewController as! viewcontroller3 upcoming.hidesBottomBarWhenPushed = true// in view controller 3,func clickOnButton(button: UIButton) {self.hidesBottomBarWhenPushed = falseself.performSegueWithIdentifier('viewController2',sender: self)self.hidesBottomBarWhenPushed = true } override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) {if segue.identifier == 'viewController2' { let upcoming = segue.destinationViewController as! viewController2 upcoming.hidesBottomBarWhenPushed = false} }// prepareForSegue in view controller 2 let upcoming = segue.destinationViewController as! viewController4 upcoming.hidesBottomBarWhenPushed = true
如果1-> 3,则返回1。
如果1-> 3-> 2则返回3并返回1。
如果2-> 4,则返回2。
如果1-> 3-> 2-> 4,则返回2,不显示选项卡栏。想知道为什么。任何建议或hidesBottomBarWhenPushed的一些解释,因为它混淆了我很多