iOSアプリケーションの画面間を移動しています。
BaseView.NavigationController.ViewControllers
画面を切り替えるとき、前の画面への参照を静的変数に保持します。
ある時点で、アイテムの1つが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のときですか?