モーダルView Controllerが現在表示されているかどうかを判断する方法はありますか? 現在表示中ですか?
viewDidAppear が 2 回呼び出され、1 回だけ呼び出される必要があるという問題があります。解決するには、モーダル ビュー コントローラーが画面上に表示されているかどうかを確認したいと思います。
ナビゲーション スタックの現在のビュー コントローラー内にコードを記述し、モーダル ビュー コントローラーが現在その上にあるかどうかを確認できれば便利でしょうか?
モーダルView Controllerが現在表示されているかどうかを判断する方法はありますか? 現在表示中ですか?
viewDidAppear が 2 回呼び出され、1 回だけ呼び出される必要があるという問題があります。解決するには、モーダル ビュー コントローラーが画面上に表示されているかどうかを確認したいと思います。
ナビゲーション スタックの現在のビュー コントローラー内にコードを記述し、モーダル ビュー コントローラーが現在その上にあるかどうかを確認できれば便利でしょうか?
何かをviewDidAppear
一度実行したい場合、それを実行する方法はたくさんありますが、ここに1つあります。まず、クラスプロパティを定義します。
@property (nonatomic) BOOL alreadyRun;
次に、でviewDidAppear
、そのプロパティを確認します。
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if (!self.alreadyRun)
{
self.alreadyRun = YES;
// do whatever you need to have done once per instance of this VC
}
}
" viewDidAppear
" が 2 回呼び出されている場合は、ビューを 2 回インスタンス化 (作成) している可能性があります。
" " にブレークポイントを設定viewDidAppear
し、バックトレースを見て、新しいビュー コントローラーがプログラムによって (コードで) 作成されているか、XIB またはストーリーボードでインスタンス化されているかを確認します。
一度だけ作成する必要があり、一度だけ作成すると、 " viewDidAppear
" は一度だけ呼び出されます。
モーダル viewController の正常性を確認する正しい場所は、viewController を提示することです。提示側の viewController は、提示された viewController がまだ存在しているか、または破棄されているかを認識している必要があります (両方のタスクを担当します)。presentingViewController には、presentedViewController
必要な参照を運ぶプロパティがあります。
モーダル VC が隠蔽されている場合 (たとえば、それ自体が別の viewController をプッシュすることによって)、その navController.viewControllers 配列プロパティからそれを確認できます。ここでも、最適な参照ソースは提示元の viewController に戻ります。
提示されているviewControllerからモーダルviewControllerへの参照を取得できない場合は、おそらく設計に問題があるため、再考する必要があります。
PresendedViewController プロパティを使用できると思います。以前のバージョンは modalViewController でした。