IOS: два UIAlert с двумя разными методами делегата - PullRequest
8 голосов
/ 08 июня 2011

У меня есть 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
}

, и все в порядке, но если у меня есть другой пример alertviewOneViewViewne, я хочу, чтобы этот alertViewOneиметь свой метод делегата, и он не должен использовать метод делегата первого предупреждения;как изменить мой код?

1 Ответ

21 голосов
/ 08 июня 2011

Просто установите тег для каждого представления Alert и проверьте, какой из них отправил messeg.

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 будет идти с собственными предупреждениями с блоками.

...