在推送控制器后,在iOS 10中更改uinavigationbar中的子视图位置

时间:2016-08-24 12:53:58

标签: uinavigationbar subview uinavigationitem ios10

我的uinavigationbar有一个子视图。我在索引0处添加了。当我用动画推动某个控制器时,子视图会显示并隐藏导航项,但如果我按下没有动画的控制器,则子视图会保留在项目下方。它只发生在iOS 10中。我无法理解为什么会这样。

1 个答案:

答案 0 :(得分:0)

当我推送或弹出新的视图控制器时,导航栏子视图重新排序时遇到了类似的问题。

我的工作实际上是通过UINavigationController方法在我的基础viewDidLoad上设置代理,并在navigationController:willShow:委托方法中重置导航栏上的可见性。

override func viewDidLoad() {
    super.viewDidLoad()

    delegate = self
}


func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
    guard let hidden = viewController.navigationController?.isNavigationBarHidden else { return }
    viewController.navigationController?.isNavigationBarHidden = !hidden
    viewController.navigationController?.isNavigationBarHidden = hidden

}

UIKit¯_(ツ)_ /¯