gpt4 book ai didi

ios - 打开和关闭 UINavigationController

转载 作者:行者123 更新时间:2023-11-29 00:40:08 28 4
gpt4 key购买 nike

我知道它可能已经写在某个地方关于这个问题了,但我只是找不到解决方案,并且已经解决这个问题几天了。

我有一个带有 UITabbar 的应用程序,带有 4 个 UINavigationController。在其中一个 UINavigationController 上有一个 UIViewController,其中有一个按钮,可以通过模式转换打开另一个 UINavigationController。打开时一切正常,但在使用代码从 UIViewController 关闭最后一个 NC 后:

self.dismiss(animated: false, completion: nil) 

self.navigationController?.dismiss(animated: false, completion: nil)

我遇到一个问题。无论我接下来做什么,我都会收到警告对开始/结束外观转换的不平衡调用,并且 UIViewControllers 方法 viewWillAppear 和 viewDidAppear 不会被调用。但要明确的是,只有当我打开一个新 View 时,我才会遇到这个问题,如果我只是在选项卡之间切换到其他 UINavigationViewController,我也会遇到这个问题。

我已经检查了我读过的一种可能性,并且我确信我不会将同一件事打开两次。

我只是无法弄清楚这是多个NavigationController的问题还是我关闭它的方式或什么的问题。

任何建议都会有所帮助。

编辑1:

忘了告诉大家,UINavigationController 是通过模态转场打开的,而不是通过代码打开的。

所有 NC 至少有一个 VC(选项卡栏上全部 4 个,还有稍后打开的一个)

编辑2:

关闭 VC 的代码在最后打开的 NC(不是选项卡栏 NC 之一)上的最后打开的 VC 上运行,以返回到选项卡栏 NC/他的 VC 之一。为了确保我会尝试再写一遍

TC -> NC    NC    NC    NC
| | | |
VC VC VC VC
|
NC
|
VC - the one that calls dismiss to return to previous VC

令人沮丧的是,在我打开另一个 UINavigationController 之前一切正常,但之后问题就开始了。或者添加我注意到的另一件事,问题出现在模态呈现另一个 Controller 之后,它是 UINavigation 还是普通的 ViewController 并不重要。

编辑3:

感谢@kgkoutio,问题解决了,我犯的错误是我没有在某处调用 super.viewDidLoad 和 super.viewWillAppear。将它添加到所有 VC 后,问题就消失了。

再次感谢@kgkoutio

最佳答案

您的代码解雇了 NC 而不是 VC。当应用程序启动时,TabBar 会使用您的导航 Controller 集进行初始化。考虑关闭 UIViewController 而不是 NC:

self.navigationController.topViewController?.dismiss(animated: false, completion: nil)

关于ios - 打开和关闭 UINavigationController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39706199/

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