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

Cra*_*Dev 8 xcode objective-c uialertview ios

我有一个UIAlert

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"ok" 
                                                        message:@"Canc?"
                                                       delegate:self 
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:@"Annul", nil];
[alertView show];
[alertView release];
Run Code Online (Sandbox Code Playgroud)

及其委托方法:

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

if(buttonIndex == 0)//OK button pressed
{
    //do something
}
else if(buttonIndex == 1)//Annul button pressed.
{
    //do something
}
Run Code Online (Sandbox Code Playgroud)

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

sha*_*oga 21

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

alertView.tag=0;
Run Code Online (Sandbox Code Playgroud)

然后

- (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
    }
  }
Run Code Online (Sandbox Code Playgroud)

更新 使用块有更好的解决方案.

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

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