Определение, какая кнопка была нажата в одном из двух UIAlertViews - PullRequest
0 голосов
/ 09 сентября 2010

У меня есть два UIAlertView, которые не отображаются один за другим.Оба имеют две кнопки, и мне нужно определить, какая кнопка была нажата.Я пытался использовать

- (void)alertOKCancelAction {
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Title"
                                               message:@"Message" delegate:self
                                     cancelButtonTitle:@"Yes" otherButtonTitles:@"No", nil];
[alert show];
[alert release];
}  

 - (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 0)
{    //Code

}
else
{//Code

}
}

Но этот код не работает, если у меня есть два UIAlertView.

Вы можете мне помочь?Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 15 июля 2011

Другой вариант, который потребует меньше ресурсов, - просто назначить значение тега каждому окну оповещения.Перечисленный выше метод работает, но сравнение строк добавляет немного больше памяти, чем просто использование значений тегов.Присваивая значения тегов каждому тегу, вы все равно можете использовать опцию clickedButtonAtIndex, а затем вам просто нужно проверить, какой просмотр предупреждений был нажат:

NSInteger alertTag = alertView.tag
if (alertTag == 1) { 
  if (buttonIndex == 0 { 
    //do something based on first Alertview being clicked
  }
}
if (alertTag == 2) { 
...continue as much as you need

Я сделал это в одном из моих приложений, поскольку веб-службы былизвонил (поэтому нам нужно было проверить сетевые соединения и показать предупреждение, чтобы повторить вызов), а также были оповещения, которые появлялись и для некоторых других взаимодействий.Использование тега выше позволило очень легко определить, с каким видом оповещения взаимодействовал.

3 голосов
/ 09 сентября 2010

Похоже, вы могли бы немного оптимизировать свой дизайн.Почему бы не обернуть метод вокруг вашего UIAlertView, а затем передать информацию, необходимую для отображения предупреждения.

Затем используйте

- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
{
      NSString *btnTitle = [alertView buttonTitleAtIndex:buttonIndex];
      //....Do something based on the btnTitle that was clicked.

}

Чтобы проверить, какая кнопка была нажата на основе заголовка.

...