Создание делегата для UIViewController - PullRequest
4 голосов
/ 17 августа 2011

Я просмотрел все и нашел много людей с похожими проблемами, но я все еще не могу заставить своих делегатов работать.Я хочу сделать всплывающий контроллер представления модели, а затем вызвать метод в представлении, которое заставило представление модели попросить его закрыть его.Итак, у меня есть эта строка:

mergeConfig *view = [[mergeConfig alloc] initWithNibName:@"mergeConfig" bundle:nil];

, и я пытаюсь [view setDelegate:self];, как сказано на страницах разработчика Apple, , но, вероятно, мое представление модели не имеет метода setDelegate.

Итак, я хочу знать, как мне получить его, чтобы я мог назначить делегата?И затем, как только я это сделаю, он просто автоматически передает вызовы методов методам в родительском представлении с тем же именем?На страницах Apple не было сказано, какой код поместить в контроллер представления модели.

Ответы [ 2 ]

5 голосов
/ 17 августа 2011

Вам необходимо определить делегата в вашем настраиваемом контроллере представления следующим образом:

@interface mergeConfig {
    id delegate;
}
@property (nonatomic, assign) id delegate;        
@end

@implementation mergeConfig
@synthesize delegate;
@end

Затем в другом месте класса для вашего контроллера представления вы можете вызывать любые методы, которые вам нужны для вашего делегата.

Лично мне нравится улучшать вышесказанное, определяя протокол, которому подчиняются мои делегаты, следующим образом:

@protocol MyDelegateProtocol
- (void)delegateMethod;
@end

@interface mergeConfig {
    id<MyDelegateProtocol> delegate;
}
@property (nonatomic, assign) id<MyDelegateProtocol> delegate;        
@end

@implementation mergeConfig
@synthesize delegate;
@end
0 голосов
/ 17 августа 2011

Если вам просто нужно закрыть модальный контроллер, просто наберите [self.parentViewController dismissModalViewControllerAnimated:YES]; в соответствующее время.Нет необходимости в делегатах, если вам не нужно передавать информацию обратно по цепочке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...