0

私は実用的なアプリケーションを持っています

最初のビューが読み込まれる前に、viewWillAppear メソッドにアラートを入れます。

    - (void)viewWillAppear
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"MyAppp" message:@"Application will connect to Internet. Continue?"
                                               delegate:self cancelButtonTitle:nil otherButtonTitles:@"No, quit", @"Yes", nil];
    [alert show];    
    [alert release];
}

2つのボタン(はい/いいえ)のクリックを正しく取得できます...

しかし...コードの実行を停止して応答を待ちたいのですが、代わりにコードは続行し、インターネットに接続してデータを取得します...

ユーザー入力に基づいてビューが読み込まれないようにするにはどうすればよいですか?

4

4 に答える 4

2

viewWillAppearは、ビューが表示される前にいくつかの作業を完了することができる通知です。ここにビューが表示されるのを避けることはできません。実装を確認する必要があります。

于 2010-10-02T21:04:59.890 に答える
1

1 つの viewWillAppear メソッドを 2 つのメソッドに分割するだけです。シーケンシャル コードの 1 つのチャンクですべてを実行しようとしないでください。

最初の方法はアラートを起動し、終了/終了/戻るだけです。

2 番目のメソッドは、アラート ボタンの応答ハンドラーによって呼び出され、ユーザーが応答した後にアラート ハンドラーによって呼び出された後にのみ、ビューの読み込みを終了できます。

最初のメソッドと 2 番目のメソッドの間で、追加の状態情報を (メソッド ローカルではなく、追加のプロパティまたはインスタンス変数に) 保存する必要がある場合とそうでない場合があります。

于 2010-10-03T00:38:21.883 に答える
1

以下を使用できます。少し古い質問は知っていますが、他の人にとっては役立つかもしれません..

[alert show];

while ((!alert.hidden) && (alert.superview != nil))
    {
        [[NSRunLoop currentRunLoop] limitDateForMode:NSDefaultRunLoopMode];

    }
于 2014-01-02T21:20:49.657 に答える
0

「ViewDidLoad」に答えを表示することで解決し、どのボタンが押されたかを取得するデリゲートを取得し、ユーザーが「はい」を押した場合にのみデータを処理しました

于 2010-10-03T09:29:17.290 に答える