1

モーダルView Controllerが現在表示されているかどうかを判断する方法はありますか? 現在表示中ですか?

viewDidAppear が 2 回呼び出され、1 回だけ呼び出される必要があるという問題があります。解決するには、モーダル ビュー コントローラーが画面上に表示されているかどうかを確認したいと思います。

ナビゲーション スタックの現在のビュー コントローラー内にコードを記述し、モーダル ビュー コントローラーが現在その上にあるかどうかを確認できれば便利でしょうか?

4

4 に答える 4

0

何かを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
    }
}
于 2013-01-13T02:02:47.817 に答える
0

" viewDidAppear" が 2 回呼び出されている場合は、ビューを 2 回インスタンス化 (作成) している可能性があります。

" " にブレークポイントを設定viewDidAppearし、バックトレースを見て、新しいビュー コントローラーがプログラムによって (コードで) 作成されているか、XIB またはストーリーボードでインスタンス化されているかを確認します。

一度だけ作成する必要があり、一度だけ作成すると、 " viewDidAppear" は一度だけ呼び出されます。

于 2013-01-13T01:42:07.163 に答える
0

モーダル viewController の正常性を確認する正しい場所は、viewController を提示することです。提示側の viewController は、提示された viewController がまだ存在しているか、または破棄されているかを認識している必要があります (両方のタスクを担当します)。presentingViewController には、presentedViewController必要な参照を運ぶプロパティがあります。

モーダル VC が隠蔽されている場合 (たとえば、それ自体が別の viewController をプッシュすることによって)、その navController.viewControllers 配列プロパティからそれを確認できます。ここでも、最適な参照ソースは提示元の viewController に戻ります。

提示されているviewControllerからモーダルviewControllerへの参照を取得できない場合は、おそらく設計に問題があるため、再考する必要があります。

于 2013-01-13T01:46:46.723 に答える
0

PresendedViewController プロパティを使用できると思います。以前のバージョンは modalViewController でした。

于 2013-09-17T15:10:20.223 に答える