我在我的 iOS 应用程序的屏幕之间导航。
BaseView.NavigationController.ViewControllers
当我切换屏幕时,我会在静态变量中保留对前一个屏幕的引用。
在某些时候,我的一个项目会从 BaseView.NavigationController.ViewControllers 中删除,即使它仍然是一个有效的视图控制器并且 IsLoaded 仍然设置为 True/YES。
当我使用时(请原谅我的 C#/MonoTouch)
BaseView.NavigationController.PopToViewController(CurrentViewController,false);
再次显示它,我得到 NSInternalInconsistencyException 原因:试图弹出到一个不存在的视图控制器。这是可以理解的,因为它不再在 ViewController 集合中。
我切换屏幕的方式是保持对各种屏幕的引用并调用通用方法来显示屏幕。在那个方法中,我使用这个逻辑来确定我应该推送还是弹出。
if (CurrentViewController.IsViewLoaded)
{
BaseView.NavigationController.PopToViewController(CurrentViewController,false);
}
else
{
BaseView.NavigationController.PushViewController(CurrentViewController,true);
}
我的问题是它去哪儿了,为什么它会从 ViewControllers 集合中删除,什么时候是 StillLoaded=true/YES?