1

ばかげた質問かもしれませんが、アラートが別のView Controllerに属している場合、アラートが表示されているかどうかをどのように検出できますか?

つまり、アラート(それを呼び出すmyAlert)がチェックしているView Controllerに属している場合、を使用[myAlert isVisible]すると通知されます。しかし、アラートが別のView Controllerに属している場合(それを呼び出しますmyOtherAlert)、さらに10個の他のView Controllerがある場合は、どうしますか?可能な限りチェックしますmyOtherViewController.myOtherAlertか?もっと良い方法はありませんか?

4

4 に答える 4

2

アラートを開くたびに 1 ずつ増やし、(まあ、ユーザー) アラートを閉じるたびに (ただし、デリゲートを通過して終了を検出する必要があります) 減少する (グローバル) 変数がある場合はどうでしょうか。変数がゼロに等しい場合、アクティブなアラートはありません。大変な作業のように聞こえますが、言語に依存しません。

于 2013-01-10T09:10:52.607 に答える
0
  • 1 つのオプションは、独自のクラスでアラートをラップし、表示されるアラートのクラス カウンターを追加することです。アラートが現在表示されている場合は、いつでもクラスを参照できます。

  • メイン ウィンドウのサブビューをトラバースして、それらの間にアラートがあるかどうかを確認できます。(これは実際には機能しません。コメントを参照してください。)

  • UI ロジックを再考して、一度に複数のアラートを表示できないようにすることもできます。つまり、アラートを表示するとすぐに、ユーザーは別のビュー コントローラーに切り替えることができなくなります。つまり、表示されなかったビュー コントローラーと一緒に画面にアラートが表示されることは非常にまれです。

于 2013-01-10T08:33:22.637 に答える
0

アラートは、どのビューまたはビュー コントローラーにも属していません。実際には別の場所に表示UIWindowされており、アプリケーションでアラートが表示されて閉じられたときに追跡する独自の一元化されたロジックを作成しない限り、表示されているかどうかを確認できないと思います。

于 2013-01-10T08:33:23.190 に答える
0

私があなたを正しく理解していれば、あなたの問題は、現時点では表示されていなくても、View Controller がアラート ビューを表示することがあるということです。この場合、簡単な修正があります。

if ([self.view window]) {
    [alertView show];
}

そうでない場合は、連想参照http://labs.vectorform.com/2011/07/objective-c-associated-objects/を調べることをお勧めします

于 2013-01-10T08:33:23.387 に答える