问题描述
顾名思义,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 = 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的一些解释,因为它混淆了我
很多