UIAlertViewDelegate: clickedButtonAtIndex и две кнопки - PullRequest
6 голосов
/ 02 апреля 2012

парни:

В моем viewController тестового приложения есть две кнопки, правую я называю "НЕТ",

, а другая - "ДА".Две кнопки будут вызывать две разные функции, и когда

пользователь нажмет одну из кнопок, я хочу показать пользователю предупреждение, подтверждающее это.

Я знаю, что использую UIAlertViewDelegate

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

но есть две кнопки, я озадачен.Как я могу узнать, какая кнопка нажата.

Итак, пожалуйста, помогите мне с этим, спасибо заранее!

Ответы [ 3 ]

17 голосов
/ 02 апреля 2012

Когда вы создаете UIAlertView, вы можете установить для него tag

-(IBAction)yesButtonClick:(id)sender{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message" delegate:self cancelButtonTitle: @"Cancel" otherButtonTitles:@"OK", nil];
    alert.tag = 101;
    [alert show];
}

-(IBAction)noButtonClick:(id)sender{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title" message:@"Message" delegate:self cancelButtonTitle: @"Cancel" otherButtonTitles:@"OK", nil];
    alert.tag = 102;
    [alert show];
}

В методе делегата проверьте, какое предупреждение показывается

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (alertView.tag == 101) {
        // from YES button
    }
    else if (alertView.tag == 102) {
        // from NO button
    }
}
0 голосов
/ 02 апреля 2012

вы можете использовать атрибут tag, чтобы сделать разницу между вашим буксируемым UIAlertView
в функции кнопки 1
alertView1.tag=1;
и в

-(void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(actionSheet.tag==1){
//first button was clicked
}

}
0 голосов
/ 02 апреля 2012
- (void)alertView:(UIAlertView *)actionSheet
    clickedButtonAtIndex:(NSInteger)buttonIndex{
  switch(buttonIndex){
    case 0:
      //YES button handler
      break;
    case 1:
      //NO button handler
      break;
    default:
      break;
   }
}
...