UIAlertViewDelegate и другие окна Alert - PullRequest
11 голосов
/ 03 декабря 2010

У меня есть контроллер, который реализует UIAlertViewDelegate. В реализации у меня есть:

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

метод. Когда я создаю UIAlertView, я ставлю для «делегата» на «себя», и он работает нормально. Но проблема в том, что теперь у меня есть еще одно предупреждение, и я хочу различного поведения для каждого из них. Итак, как проверить, какое оповещение отправляет сообщение?

Ответы [ 3 ]

12 голосов
/ 03 декабря 2010

UIAlertView является подклассом UIView и имеет свойство тега, которое вы можете использовать для различения между ними:

UIAlertView *alert1 = ... //Create alert
alert1.tag = kActionTag1;
//show alert

...

UIAlertView *alert2 = ... //Create alert
alert2.tag = kActionTag2;
//show alert

А затем в методе делегата:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
     if (alertView.tag == kActionTag1){
          // Perform 1st action
     }
     if (alertView.tag == kActionTag1){
          // Perform 2nd action
     }
}
0 голосов
/ 03 декабря 2010

UIAlertView задает свойство тега. Установите его при создании, и вы можете проверить наличие тега в делегате.

0 голосов
/ 03 декабря 2010

Указатель на каждое конкретное представление оповещения отправляется в параметре alertView метода делегата. Вам просто нужно отслеживать указатели (например, через переменные экземпляра), чтобы вы знали, что есть что, и действуйте соответственно.

...