2011-01-11 39 views
1

基本上,我試圖做的是添加多個confirmationalerts ...但我不能讓它工作。無論我按什麼確認按鈕,「繼續」按鈕都會導致完全相同的事情(一個沒有文本的主體和一個帶有「XXXX」的主題)... 任何想法如何使confimationalerts導致不同的事情?添加多個confirmationalerts(UIAlertView)

編輯2;無論我按什麼按鈕(繼續或者解聘),應用程序會將用戶帶到mail.app ...

 -(IBAction)mail { 

        UIAlertView *mail = [[UIAlertView alloc] init]; 
         [mail setTag:ALERTVIEW_MAIL_TAG]; 
         [mail setTitle:@"Open mail"]; 
         [mail setMessage:@"....."]; 
         [mail setDelegate:self]; 
         [mail addButtonWithTitle:@"Continue"]; 
         [mail addButtonWithTitle:@"Dismiss"]; 
         [mail show]; 
         [mail release]; 

        } 

        -(IBAction)feedback { 
         UIAlertView *feedback = [[UIAlertView alloc] init]; 
         [feedback setTag:ALERTVIEW_TIPSA_TAG]; 
         [feedback setTitle:@"Open mail"]; 
         [feedback setMessage:@"....."]; 
         [feedback setDelegate:self]; 
         [feedback addButtonWithTitle:@"Continue"]; 
         [feedback addButtonWithTitle:@"dismiss"]; 
         [feedback show]; 
         [feedback release]; 
        } 

- (void)showConfirmAlert 
        { 
        } 

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
        if([alertView tag] == ALERTVIEW_FEEDBACK_TAG) { 
         NSURL *url = [[NSURL alloc] initWithString:@"mailto:?subject=XXXX"]; 
         [[UIApplication sharedApplication] openURL:url]; 
         [url release]; 
        } 

     else if (buttonIndex == 1) { 
     } 



      else if ([alertView tag] == ALERTVIEW_MAIL_TAG) { 
         NSString *subject = @"YYYY"; 
         NSString *body = @"....."; 
         NSString *path = [NSString stringWithFormat:@"mailto:?subject=%@&body=%@", subject, body]; 
         NSURL *url = [NSURL URLWithString:[path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
         [[UIApplication sharedApplication] openURL:url]; 
        } 

      else if (buttonIndex == 1) { 
     } 

    } 
+0

如果你想使用應用-Mail,您必須使用MessageUI.framework,例如以模式呈現MFMailComposeViewController – Felix 2011-01-11 20:20:22

+0

我不想使用應用內郵件...我想將用戶發送到mail.app – Krismutt 2011-01-11 20:22:32

+0

對不起。我意識到我的錯誤。謝謝! – Krismutt 2011-01-11 20:34:05

回答

5

你需要設置你的UIAlertView對象tag並在委託他們進行切換方法,這就是爲什麼委託方法需要在UIAlertView中,所以你可以根據按下哪個對象來做東西。

#define ALERTVIEW_MAIL_TAG  100 
#define ALERTVIEW_FEEDBACK_TAG 101 


- (IBAction) feedback { 
    UIAlertView *feedback = [[UIAlertView alloc] init]; 
    [feedback setTag:ALERTVIEW_FEEDBACK_TAG]; 
    //... 
} 

- (IBAction) mail { 
    UIAlertView *mail = [[UIAlertView alloc] init]; 
    [mail setTag:ALERTVIEW_MAIL_TAG]; 
} 

-(void) alertView:(UIAlertView *) alertView clickedButtonAtIndex:(NSInteger) buttonIndex { 
    if([alertView tag] == ALERTVIEW_MAIL_TAG) { 
    //do stuff... 
    } else { 
    //do other stuff... 
    } 
} 
2

委託方法由UIAlertViewDelegate協議指定,您無法更改該方法。 有兩件事情可以做:

  1. 使用2種不同的代表和指定clickedButtonAtIndex - 方法爲每個類。
  2. clickedButtonAtIndex - 方法首先檢查哪個alertview已發送消息。這需要標記UIAlertView(請參閱Jacob Relkin的答案)或爲每個UIAlertView創建一個實例變量。
0

你應該指定你的哪個按鈕是取消按鈕,然後你需要檢查哪個按鈕被點擊,如果是取消按鈕,不要做任何事情。即,當您創建警報:

alertView.cancelButtonIndex = 1; 

當你得到的按鈕點擊消息:

if (buttonIndex == alertView.cancelButtonIndex) return;