我为我的一个UIViewController(称为ViewControllerA)设置了hidesBottomBarWhenPushed = true,并将其推送到我的UINavigationController堆栈中。当我在ViewControllerA的顶部推新的ViewController时,我也选择显示bottomBar。因此,我有:
class ViewControllerA: UIViewController {
override func viewWillDisappear(animated: Bool) {
self.hidesBottomBarWhenPushed = false
}
override func viewWillAppear(animated: Bool) {
self.hidesBottomBarWhenPushed = true
}
这一切都很好。
当我按ViewControllerA时,底部的栏会隐藏。
当我按下其他任何ViewController时,将显示底部栏。
但是,当我在导航堆栈中向后移动时(也就是单击UIBarButtonItemBack按钮),当我弹出导航堆栈以显示ViewControllerA时,无法隐藏bottomBar。
我想念什么?谢谢!
最佳答案
得到它了!这是起作用的:
class ViewControllerCustom: UIViewController {
init() {
self.hidesBottomBarWhenPushed = true
}
override func viewDidAppear(animated: Bool) {
self.hidesBottomBarWhenPushed = false
}
}
然后在每个UIViewController的BarButtonItemBack的自定义实现中按下,我检查是否有以前的视图控制器(将弹出到该视图控制器中以隐藏选项卡栏)。当然,我将其抽象为一个通用函数,因此不需要重复代码,但这是概念。谢谢您的帮助,尽管可以解决这个问题!
func barButtonItemBackPressed(button: UIButton) {
var viewControllers = self.navigationController!.viewControllers as! [UIViewController]
if ((viewControllers[viewControllers.count - 2]).isKindOfClass(ViewControllerCustom.self)) {
(viewControllers[viewControllers.count - 2] as! ViewControllerCustom).hidesBottomBarWhenPushed = true
}
self.navigationController?.popViewControllerAnimated(true)
}
关于ios - 返回ViewController时未设置hidesBottomBarWhenPushed,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31420598/