- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
回答:在每个 View Controller 中使用 self.tabBarController?.tabBar.hidden 而不是 hidesBottomBarWhenPushed 来管理 View Controller 是否应显示标签栏。
override func viewWillAppear(animated: Bool) {
self.tabBarController?.tabBar.hidden = true/false
}
我要
View Controller 1:应该显示标签栏
View Controller 2:应该显示标签栏
View Controller 3:不应显示标签栏。
View Controller 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 仅在需要时隐藏底部栏,它不会取消隐藏底部栏。您可以这样做以使其正常工作:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.tabBarController?.tabBar.hidden = true/false
}
或者简单地将 self.tabBarController?.tabBar.hidden = true/false
放在 prepareForSegue 中
但我不建议你这样做,因为如果 bottomBar 突然弹出会很奇怪,用户会认为他们突然回到了 rootViewController 而实际上并没有。
Users should always know where they are in your app and how to get to their next destination.
关于swift - 推/退时隐藏/显示标签栏。 swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35427102/
我是一名优秀的程序员,十分优秀!