UINavigationController从后台返回后失去对视图的跟踪

时间:2013-12-06 01:42:06

标签: ios objective-c uinavigationcontroller ios7 stack

我在仅限iOS7的应用中的UINavigationController中设置了rootViewController TabBarController。导航效果很好:我可以使用左上角的后退按钮或通过向后滑动/弹出手势来推送新视图并导航回来。

但是如果我把应用程序放在后台除了导航控制器中显示的根视图之外的任何东西我遇到了这个问题:如果我使用滑动后退手势没有弹出动画 - 视图立即消失,我就离开了与基础观点。滑动动画的缺乏不是一个大问题,但真正的问题是导航控制器中的标题现在已关闭。它仍然认为我在视线控制器上消失了!

例如:

我在导航控制器中的根视图将标题为“设置” - 然后我将推送“外观” VC,将应用程序置于后台使用主页按钮 - 重新打开应用程序,然后尝试向后滑动手势。这会让我回到“设置”,但标题仍然是“< Settings | Appearance”。现在,如果我推动另一个VC,标题会在新VC上显示“设置”,并且没有后退按钮!

只有当我使用弹出手势时才会发生这种情况 - 而不是使用导航栏后退按钮。

我试图通过将NSLog置于dealloc中来检查问题是否我的VC已被解除分配,但这不是问题。

我也尝试过:

NSLog("Hierarchy: %@",  [self.navigationController viewControllers]);
两个视图中的

都会出现并消失,看看导航控制器上的堆栈是否搞砸了 - 但这不是问题 - 堆栈是正确的。

有关如何进一步调试或我可能做错的任何建议都非常感谢!这种情况发生在我的iPhone和模拟器上,它让我疯狂。

1 个答案:

答案 0 :(得分:0)

好的,所以我终于能够通过这个答案弄明白发生了什么:

https://stackoverflow.com/a/15945415/492505

原来我运行了以下内容:我的应用程序中的[[self.tabBarController selectedViewController] viewWillAppear:NO];确实变为活动状态。

希望这有助于其他人。