0

呼び出されるたびに 3 回ポップアップする UIAlert があります。クリックする前に、表示されてから消えます。それviewDidLoad自体が3回呼び出されているのでしょうか?

viewDidLoadアプリの に UIAlert を実装しました。

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:alertMessage  delegate:self cancelButtonTitle:ok otherButtonTitles:nil];

これはviewDidLoad、ビューを管理する rootViewController にあります。

- (void)viewDidLoad {
    Kundenkarte *kartenAnsicht = [[Kundenkarte alloc]
                                                initWithNibName:@"Kundenkarte" bundle:nil];
    kartenAnsicht.rootViewController = self;
    kartenAnsicht.viewDidLoad;
    self.map = kartenAnsicht;


    [self.view addSubview:kartenAnsicht.view];


    [kartenAnsicht release];
//  [super viewDidLoad];

}

UIAlertviewDidLoadを呼び出すのは、kartenAnsichtView Controller にあります。

私はアイデアがないので、誰かが私を助けてくれることを願っています。

4

3 に答える 3

1

自分自身を呼び出す必要はありません-viewDidLoad。NIB 読み込みメカニズムによって自動的に実行されます。つまり-viewDidLoad、設計上 : の追加の呼び出しが 1 つ取得され、それを呼び出すたびに追加の呼び出しが行われることを意味します。

于 2010-03-15T08:37:30.973 に答える
0

アラート呼び出しの周りのコードを見ると役に立ちます。

到達可能性が変化するたびにアラートを使用しています。到達可能性は繰り返しチェックされるため、アラートが繰り返し呼び出される可能性があります。それを軽減するために、アラート コードを次のようにラップします。

if (!myAlert) { /* set up and show myAlert */ }

ただし、これに関する 1 つの問題は、[キャンセル] ボタンをクリックすると、アラートが非 nil のままになり、その条件のために再び表示されないことです。誰かがこの応答に修正を加えて追加できれば、それは素晴らしいことです。myAlert を破棄するキャンセル ボタンのハンドラーを追加できると思います。

于 2010-07-02T19:03:41.620 に答える
0

まず第一に、どんな種類のディスプレイも に入れるべきではありませんviewDidLoad。このメソッドは、ビューが nib から最初に読み取られた後の舞台裏の構成を目的としています。ビューが表示されるたびに呼び出されるという確実性はありません。これは、最初にロードした後、ビューがメモリに保持され、nib からリロードされない可能性があるためです。

代わりに、NSAlert を呼び出す呼び出しをviewWillDisplayまたはに入れviewDidDisplayます。これにより、ビューが表示されるたびにアラートが表示されます。

3回呼び出されているとは思えませんviewDidLoadが、それを確認するには、メソッドに NSLog を入れて、呼び出された回数を確認してください。

あなたがそれを言うとき:

アプリの viewDidLoad() に NSAlert を実装しました。

... どういう意味ですか?どのオブジェクトが正確にメソッドを持っていますか? アプリケーション デリゲートの場合、アプリケーション デリゲート プロトコルが に応答しないため、これは機能しませんviewDidLoad。UIViewController にある必要があります。

Edit01:

同じ問題が発生したこの投稿を参照してください: UIAlertView が呼び出しごとに 1 回ではなく 3 回ポップアップする

簡単な答え: アラートを解放することで、アラートを強制終了します。View Controllerのプロパティとして保持するか、より良い方法として、runModal代わりにアラートを表示し、showすぐに返されたボタン番号をキャプチャします。

于 2010-03-15T12:47:21.757 に答える