IOS:停止UIAlert循环

时间:2011-06-01 13:43:06

标签: objective-c xcode ios uialertview

我有这段代码:

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

      }
      else if(buttonIndex == 1)
      {
           UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Danger" 
                                                        message:@"war"
                                                       delegate:self 
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:nil];
    [alertView show];
    [alertView release];

      }
}

但是每次我推出这个UIAlert它都会返回这个委托方法;我怎么能解决这个问题?我可以使用BOOL进行控制吗?

3 个答案:

答案 0 :(得分:3)

将第二个alertView的代理设置为nil。

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Danger" 
                                                    message:@"war"
                                                   delegate:nil 
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];

但是,如果您希望将来向第二个选项添加选项,则可以将tag值设置为alertView并检查委托方法的调用标记。根据{{​​1}}值,您将执行不同的任务。

答案 1 :(得分:1)

您可以将altertView的tag属性设置为1,如此

alertView.tag = 1;

并将您的代码更改为:

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

      if ([alertView tag] != 1) {
          if(buttonIndex == 0)
          {

          }
          else if(buttonIndex == 1)
          {
               UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Danger" 
                                                        message:@"war"
                                                       delegate:self 
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:nil];
              alertView.tag = 1;
              [alertView show];
              [alertView release];

          }
       }
}

您还可以更改警报视图的委托。

答案 2 :(得分:0)

你无法阻止它,除非你设置了delegate属性nil

使用如下

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

          }
          else if(buttonIndex == 1)
          {
               UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Danger" 
                                                        message:@"war"
                                                       delegate:nil                                                  cancelButtonTitle:@"OK"
                                              otherButtonTitles:nil];
              alertView.tag = 1;
              [alertView show];
              [alertView release];

          }
}