Не вызывается UIAlertView clickedButtonAtIndex

#objective-c #ios #delegates #uialertview

#цель-c #iOS #делегаты #uialertview #objective-c

Вопрос:

вот как я создаю оповещение:

 UIAlertView* dialog = [[UIAlertView alloc] init];

dialog.delegate = self;

//some options

aField = [[UITextField alloc]initWithFrame:CGRectMake(20.0,45.0,245.0,25.0)];
[aField setBackgroundColor:[UIColor whiteColor]];
[dialog addSubview:appkeyField];

[dialog show];
[aField release];
  

Однако

 - (void)alertView:(UIAlertView *)alertView 
                  clickedButtonAtIndex:(NSInteger)buttonIndex{
    NSLog(@"test here");
}
  

ничего не делает. В журнале ничего нет! Что может быть не так?

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

1. Вы поместили UIAlertViewDelegate протокол в заголовок?

2. спасибо, это была проблема, сделайте это ответом!

Ответ №1:

Когда вы устанавливаете delegate свойство объекта, ваш класс должен принять соответствующий протокол. В вашем случае вы используете UIAlertView , поэтому вам нужно добавить UIAlertViewDelegate протокол в ваш заголовочный файл:

 @interface MyClass : UIViewController <UIAlertViewDelegate>
  

Чтобы добавить несколько протоколов, используйте:

 @interface MyClass : UIViewController <Protocol1, Protocol2, ...>