我为我的一个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/

10-13 05:08