导航和更改导航栏可见性时出现奇怪的视图效果

Strange view effect when navigating and changing visibility of navigation bar

我有一个 UINavigationController 并且我希望它的根视图控制器隐藏导航栏,所以我在根视图控制器的 class:

中写了这个
override func viewWillLayoutSubviews() {
    self.navigationController?.setNavigationBarHidden(true, animated: false)
}

这有效地隐藏了导航栏。这个根视图控制器有一个按钮,在点击时会推送一个新的视图控制器。我希望第二个视图控制器显示导航栏,所以在它的 subclass:

override func viewWillLayoutSubviews() {
    self.navigationController?.setNavigationBarHidden(false, animated: false)
}

然后显示导航栏,但是当我点击它的后退按钮并导航回上一个视图控制器(我想隐藏导航栏的那个)时,它会在其视图顶部瞬间显示在导航栏应该出现的地方显示黑色 space,最后视图 "goes" 再次显示到屏幕顶部。

我怎样才能避免这种影响?

尝试在viewWillAppear中设置隐藏导航栏

override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated); self.navigationController?.setNavigationBarHidden(true, animated: false) }