gpt4 book ai didi

ios - 应用程序暂停时主导航栏消失

转载 作者:行者123 更新时间:2023-11-30 12:09:00 30 4
gpt4 key购买 nike

我有一个具有以下结构的应用程序:

  1. 我的应用程序的根部是一个主场景,其中有一个基本 View Controller ,由我的顶级导航 Controller 管理并显示导航栏。
  2. 我有第二个场景,其中容器 View 占据整个屏幕。
  3. 容器 View 中嵌入了另一个导航 Controller ,带有附加 View Controller 和自己的导航栏。
  4. 为了避免同时显示两个导航栏,我在容器 View Controller 中隐藏和取消隐藏主导航栏,如下面的代码所示。
  5. 我从主场景导航到嵌入场景并返回。
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
}

只要我不离开应用程序,此功能就可以正常工作。 如果应用程序在显示嵌入式 View 时被关闭,则会发生以下情况:嵌入式导航栏仍然可见,但当我返回主视图时,其导航栏消失了。

在主场景中再次尝试取消隐藏它不会将其恢复。 如何显示导航栏?

顺便说一句,如果您想查看 previous question 中描述的更详细的设置。

<小时/>

更新:这很奇怪。我找到了三种隐藏导航栏的方法,它们似乎在大多数情况下都能完成工作:

navigationController?.isNavigationBarHidden = truenavigationController?.setNavigationBarHidden(true,animated: false)navigationController?.navigationBar.isHidden = true

最后一个是我用来确保该栏在应用程序恢复后保持隐藏状态的方法(请参阅上面的 applicationDidBecomeActive())。将其替换为其他两个选项中的任何一个即可消除该问题。它与嵌入式导航 Controller 无关。

我还不敢将此作为答案发布,因为我无法真正解释它。如果有人可以,我很乐意接受答案。

最佳答案

问题似乎是所有提到的三种方法都能够从 View 中隐藏导航栏,但第三个选项是设置与其他两个不同的属性。

因此,使用 navigationController?.navigationBar.isHidden = true 隐藏栏,然后尝试使用 self.navigationController?.setNavigationBarHidden(false,animated: true) 取消隐藏它 不起作用。无论哪种方式保持一致都可以解决问题。

关于ios - 应用程序暂停时主导航栏消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46303594/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com