滑动ViewController时导航栏错误

时间:2016-08-01 09:40:32

标签: ios iphone swift uinavigationbar

我有一个View Controller,它是第二个视图控制器,需要一个导航栏。第一个是控制器,它不需要导航栏,第三个视图控制器需要一个导航栏。

根据堆栈第3个视图控制器将不是堆栈顶部。

我在第二视图控制器中实现了这些方法:

arr = [3] * 20

如果使用override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) if self.navigationController?.navigationBarHidden == true{ self.navigationController?.navigationBarHidden = false } self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil) self.navigationController?.navigationBar.tintColor = Quikr_Util.colorWithHexString("#0083cb") } override func viewWillDisappear(animated: Bool) { super.viewWillDisappear(animated) if self.navigationController?.navigationBarHidden == false{ self.navigationController?.navigationBarHidden = true } } 小节按钮从第3个视图控制器返回到第2个视图控制器,那么工作正常。

当我开始从一个视图控制器滑动到另一个视图控制器时,当我滑动一半然后释放时,事情变得混乱。

这意味着从第3个滑动到第2个但在两者之间释放,因此它转到第3个视图控制器而不是第二个。

隐藏和取消隐藏视图导航栏的最佳方式可能是什么。

其次,滑动如何工作,滑动时会调用哪些函数?

1 个答案:

答案 0 :(得分:0)

第一个问题

要隐藏和显示导航控制器,请在第二和第三视图控制器中,您可以使用:

  • 隐藏:

    navigationController?.setNavigationBarHidden(true, animated: false)
    
  • 显示:

    navigationController?.setNavigationBarHidden(false, animated: false)
    

确实没有必要检查它是否隐藏。

对于第二个问题,您可以使用UIGestureRecognizer

编辑: 为了清楚起见,而不是隐藏并显示在同一个文件中,隐藏并显示在viewDidAppear()所需的快速文件中