IOS:两个UIAlert,有两种不同的委托方法

时间:2011-06-08 09:41:27

标签: objective-c xcode ios uialertview

我有一个UIAlert

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"ok" 
                                                        message:@"Canc?"
                                                       delegate:self 
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:@"Annul", nil];
[alertView show];
[alertView release];

及其委托方法:

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

if(buttonIndex == 0)//OK button pressed
{
    //do something
}
else if(buttonIndex == 1)//Annul button pressed.
{
    //do something
}

并且一切正常但是如果我有另一个alertview示例“alertViewOne”,我希望这个alertViewOne有它的委托方法,它不应该使用第一个alertview的委托方法;怎么改变我的代码?

1 个答案:

答案 0 :(得分:20)

只需为每个警报视图设置一个标签,并检查哪一个发送了messeg。

alertView.tag=0;

然后

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

     if(buttonIndex == 0)//OK button pressed
    {
    //do something
    }
    else if(buttonIndex == 1)//Annul button pressed.
    {
    //do something
    }
}else{
    if(buttonIndex == 0)//OK button pressed
    {
    //do something
    }
      else if(buttonIndex == 1)//Annul button pressed.
    {
    //do something
    }
  }

<强>更新 使用块有一个更好的解决方案。

您可以查看此项目,例如: UIAlertView-Blocks

据我所知,iOS8将带有块的本机警报。