#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, ...>