UIAlertViewDelegate и другие окна предупреждений

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

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

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

3 ответа

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
 }
}


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


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

licensed under cc by-sa 3.0 with attribution.