2011-06-08 58 views
8

我有一个UIAlertIOS:二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的委托方法;如何更改我的代码?

回答

20

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

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上会与原生块警报。

+0

好的...非常感谢 – CrazyDev 2011-06-08 09:59:39

+0

我可以在哪里设置标签?在viewDidLoad中?当您创建警报视图时,您可以使用 – CrazyDev 2011-06-08 10:02:59

+0

。在alloc之后。 – shannoga 2011-06-08 10:42:42