0

私のアプリケーションでは、 for ループで UIAlertView を表示し、「はい」、「いいえ」の選択に基づいて表示したい

次のステップを実行したい。UIAlertView は実行を一時停止しないため、このシナリオを処理できません。counter global と all を使用すると、コードがより複雑になります。したがって、ユーザーがアラートボタンを選択するまで、実行を一時停止したい方法があります。

これに対する解決策を教えてください。

ありがとう。

4

2 に答える 2

0

まず、View Controller のファイルに追加<UIAlertViewDelegate>します。.h

@interface ViewController : UIViewController <UIAlertViewDelegate> {

次に、アラートを作成し、必要なときに表示します。

- (void)showConfirmAlert
{
    UIAlertView *alert = [[UIAlertView alloc] init];
    [alert setTitle:@"Confirm"];
    [alert setMessage:@"Do you pick Yes or No?"];
    [alert setDelegate:self]; // Notice we declare the ViewController as the delegate
    [alert addButtonWithTitle:@"Yes"];
    [alert addButtonWithTitle:@"No"];
    [alert show];
    [alert release];
}

ボタンのクリックをキャッチするデリゲート メソッドを実装します。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (buttonIndex == 0)
    {
        // Yes, do something
    }
    else if (buttonIndex == 1)
    {
        // No
    }
}

ほら、両方の状況を処理できます。

編集:alertView:clickedButtonAtIndex:アラートが多数ある場合は、それらをすべてグローバル オブジェクトとして宣言して、メソッド内で各アラートを区別できるようにします。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{

    if (alertView == alertOne) { //alertOne is a globally declared UIAlertView
        if (buttonIndex == 0)
        {
            // Yes, do something
        }
        else if (buttonIndex == 1)
        {
            // No
        }
    } else if (alertView == alertTwo) { //alertTwo is a globally declared UIAlertView
        if (buttonIndex == 0)
        {
            // Yes, do something
        }
        else if (buttonIndex == 1)
        {
            // No
        }
    }
}
于 2012-07-17T09:29:58.463 に答える
0

AlertViewを表示すると、その時点でループが中断され、ユーザーの選択により、ループまたはさらに実行が再度実行されます。ところで、あなたは実際に何を達成したいですか?

于 2012-07-17T09:37:28.430 に答える