答案: 在每个视图控制器中使用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 = false self.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的一些解释,因为它混淆了我 很多
顾名思义,hiddenBottomBarWhenPushed仅在 需要时隐藏底部栏,而不会取消隐藏bottomBar。您可以执行以下操作使其生效:
override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) self.tabBarController?.tabBar.hidden = true/false }
或者干脆把self.tabBarController?.tabBar.hidden = true/false在 prepareForSegue
self.tabBarController?.tabBar.hidden = true/false
prepareForSegue
但是我不建议您这样做,因为bottomBar突然弹出会很奇怪,用户会以为它们突然回到了 rootViewController而不是。
bottomBar
rootViewController
用户应始终知道他们在应用中的位置以及如何到达下一个目的地。