滑动 ViewController 时出现导航栏错误
Posted
技术标签:
【中文标题】滑动 ViewController 时出现导航栏错误【英文标题】:Navigation bar Bug while Sliding ViewController 【发布时间】:2016-08-01 09:40:31 【问题描述】:我有一个视图控制器,它是第二个视图控制器,需要一个导航栏。第一个是不需要导航栏的控制器,第三个视图控制器需要导航栏。
根据堆栈,第三个视图控制器将不是堆栈顶部。
我已经在 2nd View Controller 中实现了这些方法:
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
如果使用back
条形按钮从第三个视图控制器返回到第二个视图控制器,则一切正常。
当我开始从一个视图控制器滑动到另一个视图控制器时,事情变得一团糟,例如,当我滑动一半然后释放时。
这意味着从 3rd 滑到 2nd 但在两者之间释放,所以它转到 3rd View Controller 而不是第二个。
隐藏和取消隐藏视图导航栏的最佳方式可能是什么。
其次,滑动是如何工作的,滑动时会调用哪些函数?
【问题讨论】:
您能否更具体地谈谈“事情变得一团糟?” 【参考方案1】:第一个问题
要隐藏和显示导航控制器,在第二和第三视图控制器中,您可以使用:
隐藏:
navigationController?.setNavigationBarHidden(true, animated: false)
显示:
navigationController?.setNavigationBarHidden(false, animated: false)
实际上不需要检查它是否隐藏。
对于第二个问题,你可以使用 UIGestureRecognizer
编辑:
为了清楚起见,不是在同一个文件中隐藏和显示,而是在需要的 swift 文件中隐藏和显示viewDidAppear()
【讨论】:
两个不同的视图控制器文件 我尝试这样做,我将导航栏隐藏在第二个视图控制器的 viewdidload 中,并在第三个中再次显示它。然后当我按回时,我可以在第二个视图控制器中再次看到该栏。 我应该放在每个 View Controller 的 viewDidAppear() 中吗? 每一个你有变化的。如果你隐藏在VC2中,你需要在VC1和VC3中显示以上是关于滑动 ViewController 时出现导航栏错误的主要内容,如果未能解决你的问题,请参考以下文章
如何找出属于当前 viewController 的导航控制器?
检查当前 viewController 类是不是为 IOS 7 中的 Person ViewController 时出现问题