[英]Main Navigation Bar Disappears When the App Is Suspended
我有一个具有以下结构的应用程序:
override func viewDidLoad() {
super.viewDidLoad()
// Get notified when app is resumed.
NotificationCenter.default.addObserver(self, selector: #selector(applicationDidBecomeActive), name: NSNotification.Name.UIApplicationDidBecomeActive, object: nil)
// Hide main navigation controller's top bar.
navigationController?.setNavigationBarHidden(true, animated: true)
}
override func viewWillDisappear(_ animated: Bool) {
// Show main navigation controller's top bar when leaving split view.
self.navigationController?.setNavigationBarHidden(false, animated: true)
super.viewWillDisappear(animated)
}
func applicationDidBecomeActive() {
// Hide main navigation controller's top bar after returning to app.
navigationController?.navigationBar.isHidden = true
}
只要我不离开应用程序,此方法就可以很好地工作。 如果在显示嵌入式视图时关闭应用程序,则会发生以下情况:嵌入式导航栏仍然可见,但是当我返回主视图时,其导航栏消失了。
在主场景中取消隐藏它的其他尝试不会将其恢复。 如何显示导航栏?
另外,如果您想查看更详细的设置,请参见上一个问题 。
更新:这很奇怪。 我发现了三种隐藏导航栏的方法,它们似乎在大多数情况下都能完成工作:
navigationController?.isNavigationBarHidden = true
navigationController?.setNavigationBarHidden(true, animated: false)
navigationController?.navigationBar.isHidden = true
最后一个是我用来确保应用程序恢复后该栏保持隐藏的功能(请参阅上面的applicationDidBecomeActive()
)。 用其他两个选项之一替换它可以消除此问题。 它与嵌入式导航控制器无关。
我不敢将其发布为答案,因为我无法真正解释它。 如果有人可以,我将很乐意接受答案。
问题似乎在于,上述所有三种方式都能够从视图中隐藏导航栏,但是第三个选项设置的属性不同于其他两种。
因此,使用navigationController?.navigationBar.isHidden = true
隐藏该栏,然后尝试使用self.navigationController?.setNavigationBarHidden(false, animated: true)
取消隐藏。 任一种方式都可以解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.