2011-06-01 76 views
0

按鈕控件我有這樣的代碼在IBAction爲:IOS:兩人在一個UIAlert

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"NO!" 
                 message:@"danger" 
                 delegate:self 
               cancelButtonTitle:@"OK" 
               otherButtonTitles:@"Annul", nil]; 

    [alertView show]; 
    [alertView release]; 

現在,如果我按「OK」必須做的事,如果我把「年度審覈及年度」必須做的另一件事。但它必須在IBAction內完成。

+1

「必須在IBAction內完成」..你是什麼意思?爲什麼不使用UIAlertviewDelegate回調clickedButtonAtIndex – Krishnabhadra 2011-06-01 11:13:18

回答

1

Jhaliya的答案是偉大的,但它並沒有解決blackguardian的請求,IBAction方法中運行這些。有一個IBAction方法阻塞並等待來自UIAlertView的響應是在CocoaTouch中工作的錯誤方法。 IBAction應該只顯示UIAlertView。然後Jhaliya的答案中的委託功能應解析繼續的方式,「OK」或「Annul」。然後該委託函數可以執行該操作(可能通過調用其他方法)。 CocoaTouch的事件處理不適用於IBAction方法阻止等待進一步的用戶輸入。

覺得鏈IBAction->UIAlertView->alertView:clickedButtonAtIndex:的作爲只是不使用UIAlertView時,並將其放置在IBAction你當前的代碼這條產業鏈後IBAction

+0

aaaaah ....好的....你的解釋很清楚...謝謝 – CrazyDev 2011-06-01 13:18:56

9

您需要實施UiAlertViewDelegate方法。

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

所以委託函數應該如下所示。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
    { 
      if(buttonIndex == 0)//OK button pressed 
      { 

      } 
      else if(buttonIndex == 1)//Annul button pressed. 
      { 

      } 
    } 
+0

如果我使用這個方法委託在ibaction中有效果? – CrazyDev 2011-06-01 11:14:57

+0

+1)@blackgaurdian,爲什麼你在ibaction中生效。 – Ishu 2011-06-01 11:31:08

+0

我解釋我的問題:如果我按下OK,則Ib操作繼續執行其操作,而如果按下Annul,則IBAction的指令爲「返回」; – CrazyDev 2011-06-01 13:15:28