【发布时间】:2016-09-26 15:02:26
【问题描述】:
我知道它可能已经在某处写过有关此问题的文章,但我找不到解决方案并且已经解决了几天。
我有一个带有 4 个 UINavigationControllers 的 UITabbar 应用程序。 在其中一个 UINavigationController 上,有一个 UIViewController 带有一个按钮,该按钮通过模态转换打开另一个 UINavigationController。打开后一切正常,但在使用代码从其 UIViewController 关闭最后一个 NC 后:
self.dismiss(animated: false, completion: nil)
或
self.navigationController?.dismiss(animated: false, completion: nil)
我遇到了问题。 无论我接下来做什么,我都会收到警告不平衡调用开始/结束外观转换,并且不会调用 UIViewControllers 方法 viewWillAppear 和 viewDidAppear。但为了清楚起见,我只有在打开新视图时才会遇到这个问题,如果我只是在选项卡之间切换到其他 UINavigationViewController 也会遇到这个问题。
我已经检查了我读到的一种可能性,并且我确定我不会打开一件事两次。
我只是不知道是多个 NavigationControllers 的问题还是我关闭它的方式或什么。
任何建议都会有所帮助。
编辑1:
忘了说,UINavigationController 是通过模态序列打开的,而不是通过代码打开的。
所有 NC 至少有一个 VC(所有 4 个在标签栏上,还有一个稍后打开)
EDIT2:
关闭 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 一切正常,但在那之后问题就开始了。或者添加我注意到的另一件事,在模态呈现另一个控制器后出现问题,它是 UINavigation 还是普通 ViewController 都没关系。
EDIT3:
感谢@kgkoutio,问题解决了,我犯的错误是我没有在某处调用 super.viewDidLoad 和 super.viewWillAppear。将其添加到所有 VC 后,问题就消失了。
再次感谢@kgkoutio
【问题讨论】:
标签: ios uinavigationcontroller uitabbarcontroller