2011-06-08 56 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