Я считаю, что проще всего объяснить это с помощью обычного делегата в UIKit, например UIAlertViewDelegate
. Вот пример кода:
В вашем файле .h вы сказали бы, что ваш класс соответствует делегату, например:
@interface Foo : UIViewController <UIAlertViewDelegate> { // ...
Это сообщает компилятору, что класс Foo
реализует некоторые или все методы делегата.
Когда вы создаете экземпляр UIAlertView
, вы указываете, какой делегат для объекта:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Title"
message:@"Message"
delegate:self
cancelButtonTitle:@"Okay"
otherButtonTitles:@"Cancel", nil];
[alert show];
[alert release];
Обратите внимание, что мы говорим, что self
является делегатом.
Теперь вы хотите реализовать необходимые методы:
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
NSLog(@"%d got clicked", buttonIndex);
}
Для UIAlertView
есть свойство типа id<UIAlertViewDelegate>
, которое связывает это с вашим исходным вопросом.
Я довольно новичок в разработке Objective-C / iPhone, и одна вещь, которую я нашел очень полезной, - это поиск связанного xxxxDelegate
в разделе «Обзор» класса. Вы обязательно найдете полезные (на других языках) события, которые запускаются для общих действий.
Надеюсь, это поможет!