IOS:两个UIAlert和两个不同的委托方法

我有一个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 } 

这一切都ok,但如果我有另一个alertview示例“alertViewOne”,我希望这个alertViewOne有它的委托方法,它不应该使用第一个alertview的委托方法; 如何更改我的代码?

只需在每个警报视图中设置一个标记,然后检查哪一个发送了信息。

 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 } } 

更新有一个更好的解决scheme使用块。

你可以看看这个项目,例如: UIAlertView-Blocks

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