IOS: два UIAlert с двумя разными методами делегирования

#objective-c #xcode #ios #uialertview

#objective-c #xcode #iOS #uialertview

Вопрос:

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

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

Ответ №1:

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

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

Комментарии:

1. где я могу установить тег? В viewDidLoad?

2. при создании представления предупреждений. сразу после выделения.