在for循环中显示UIAlertView后暂停执行

时间:2012-07-17 09:21:12

标签: ios uialertview

在我的应用程序中,我想在for循环中显示UIAlertView,并根据“是”,“否”的选择

我想执行后续步骤。由于UIAlertView不会暂停执行,因此我无法处理此方案。拥有全局计数器,所有这些都会使我的代码更加复杂。所以我想在用户选择警报按钮之前暂停执行。

请告诉我任何解决方案。

感谢。

2 个答案:

答案 0 :(得分:0)

首先将<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
        }
    }
}

答案 1 :(得分:0)

当您显示AlertView时,断开您的循环,然后在用户选择上再次运行循环或进一步执行。那么你想要实现什么目标呢?