2010-01-21 108 views
3

我在我的應用程序中有3個警報視圖。 'wonAlert' 'lostAlert' 'nagAlert'取決於警報視圖的警報視圖按鈕的不同動作

我實現了這個動作。

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

這用來做工精細,當我剛剛在「wonAlert」和「lostAlert」,他們有一個解僱和學習更多的按鈕,把他們帶到了維基百科, 現在我想的嘮叨警報採取他們到應用程序商店。

我該如何做到這一點上述方法知道水龍頭來自哪個警報視圖,或類似的東西?

乾杯,山姆

回答

6

這聽起來像你在變量得到了UIAlertViews,所以我會使用他們:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    if (alertView == wonAlert) { 
     //DO STUFF 
    } 
    else if (alertView == lostAlert) { 
     //DO OTHER STUFF 
    } 
    else if (alertView == nagAlert) { 
     //OPEN APP STORE 
    } 
} 

多個視圖可以有相同的標籤,你可以很容易輸錯題或改變它,忘記更新委託方法。

1

在視圖控制器頭文件,添加<UIAlertViewDelegate>所以,它同意處理UIAlertView委託方法:

@interface MyViewController : UIViewController <UIAlertViewDelegate> { ... } 

在您的視圖控制器的實現,添加以下的委託方法:

- (void) alertView:(UIAlertView *)_actionSheet clickedButtonAtIndex:(NSInteger)_buttonIndex { 
    if ([_actionSheet.title isEqualToString:@"titleOfMyAlertView"]) { 
     if (_buttonIndex == 0) { 
      // do stuff for first button 
     } 
     else if (_buttonIndex == 1) { 
      // do something for second button 
     } 
     // etc. if needed 
    } 
} 

_actionSheet.title屬性可用於區分aler t觀點。我的建議是使用NSString常量或NSLocalizedString(),如果您有本地化的字符串表,則爲您的警報視圖標題。

0

我會做Alex的建議,但使用AlertView的標籤屬性來確定使用了哪個AlertView。

1

我在這裏回答了類似的問題:

alertName.tag = #; //ex: alertName.tag = 1 
Alert with 2 buttons

做到這一點,正確的做法是在創建每個警報使用警報

的標籤屬性,通過增加設置其標記變量

然後,在clickedButtonAtIndex方法中,您需要爲每個警報添加一個'if'塊,如下面的代碼所示:

if(alert.tag == 1) 
{ 
    if (buttonIndex == 0) 
    { 
     //do stuff 
    } 
    else 
    { 
     //do other stuff 
    } 
} 
if(alert.tag == 2) 
///...etc