UINavigationController 从后台返回后失去对视图的跟踪
Posted
技术标签:
【中文标题】UINavigationController 从后台返回后失去对视图的跟踪【英文标题】:UINavigationContoller loses track of views after returning from background 【发布时间】:2013-12-06 01:42:06 【问题描述】:我有一个UINavigationController
设置为rootViewController
在一个仅限ios7 的应用程序中的TabBarController
。导航效果很好:我可以推送新视图并使用左上角的后退按钮或滑动/弹出手势向后导航。
但是,如果我将应用程序放在后台,除了导航控制器中显示的根视图之外,我会遇到这个问题:如果我使用向后滑动手势,则没有弹出动画 - 视图立即消失,我离开了与底层视图。缺少滑动动画不是什么大问题,但真正的问题是导航控制器中的标题现在关闭了。它仍然认为我在刚刚消失的视图控制器上!
例如:
我在导航控制器中的根视图将具有标题“设置” - 然后我将推送“外观” VC,使用主页按钮 - 重新打开应用程序,然后尝试向后滑动手势。这让我回到“设置”,但标题仍然显示“。现在,如果我按下另一个 VC,新 VC 上的标题会显示 “设置”,并且没有返回按钮!
只有当我使用弹出手势时才会发生这种情况 - 当我使用导航栏后退按钮时不会发生这种情况。
我试图通过将NSLog
放入 dealloc 来检查问题是否是我的 VC 被释放,但这不是问题。
我也试过放一个:
NSLog("Hierarchy: %@", [self.navigationController viewControllers]);
在两个视图中都会出现和消失,以查看导航控制器上的堆栈是否混乱 - 但这不是问题 - 堆栈是正确的。
非常感谢任何有关如何进一步调试或我可能做错的建议!这发生在我的 iPhone 和模拟器上,这让我抓狂。
【问题讨论】:
【参考方案1】:好的,多亏了这个答案,我终于能够弄清楚发生了什么:
https://***.com/a/15945415/492505
原来我正在运行以下命令:我的应用程序中的[[self.tabBarController selectedViewController] viewWillAppear:NO];
确实处于活动状态。
希望这对其他人有所帮助。
【讨论】:
以上是关于UINavigationController 从后台返回后失去对视图的跟踪的主要内容,如果未能解决你的问题,请参考以下文章
带有主 UINavigationController 和详细 UINavigationController 的 UISplitViewcontroller
带有 UINavigationController 的 UITabBarController,在 hidesBottomBarWhenPushed 上隐藏 UINavigationController
在 UINavigationController 内的 UITabBarcontroller 中添加 UINavigationController?
UINavigationController 与 AppDelegate 中的 UISegmentedControl 切换 UINavigationController 的 rootviewcontr
从一个 UINavigationController 到另一个 UINavigationController (Swift iOS 9, xcode 7)