我有两个viewcontrollers。第一个viewcontroller是集合视图控制器,我在self.navigationController?.hidesBarsOnSwipe = true中设置了viewDidLoad()

当我从collectionView的可见单元格中推入第二个viewController时,导航栏将显示在第二个viewController中,但是如果我滚动collectionView单元格并在推入时不显示导航。

谁能告诉我问题是什么?

最佳答案

滚动是通过滑动手势完成的,因此会触发您的代码:

self.navigationController?.hidesBarsOnSwipe = true

因为导航控制器是在其顶部显示的所有视图控制器之间共享的,所以它的属性(如隐藏栏)保留了推入/弹出操作。

常见的模式是在覆盖的生命周期方法中更改其状态,例如:
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    self.navigationController?.hidesBarsOnSwipe = false
    self.navigationController?.setNavigationBarHidden(false, animated: true)
}

并在viewWillDisappear中还原这些状态

关于ios - 推送到另一个ViewController时NavigationBar被隐藏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46300917/

10-09 15:05