Действие делегирования никогда не вызывается

У меня возникли проблемы с использованием протоколов/делегатов, когда я пытался перезагрузить данные из UITableView в свой rootViewController, когда мое модальное представление было отклонено.

Вот некоторый код из моего модального представления .h файла:

@protocol LoginWebViewDelegate <NSObject>
     -(void) updateFromModalView;
@end

@interface myModalView : UIViewController{
    id<LoginWebViewDelegate> loginDelegate; 
    ..
}
@property (nonatomic, assign) id<LoginWebViewDelegate> loginDelegate;
..
-(IBAction)dismiss;
..

В моем файле .m я синтезирую loginDelegate и реализую действие отклонения, и оно активируется, когда я нажимаю кнопку.

-(IBAction) dismiss
{
    NSLog(@"Button Pressed!");
    [loginDelegate updateFromModalView];
}

Затем в интерфейсе моего rootViewController я добавил <LoginWebViewDelegate>, и вот действие в моей реализации:

-(void) updateFromModalView
{
    [modalView dismissModalViewControllerAnimated:YES];
    NSLog(@"Reloading Data");
    [dataController readPlist];
    [dataTable reloadData];
    [dataTable beginUpdates];
    [dataTable deleteSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:YES];
    [dataTable insertSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:YES];
    [dataTable endUpdates];
}

Метод updateFromModalView никогда не вызывается. Что мне не хватает?


person Kex    schedule 27.10.2011    source источник


Ответы (1)


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

Где-то в вашем коде вам нужен оператор вроде:

self.loginDelegate = _something_;

Или любой объект, создающий этот контроллер представления, установит себя или другой объект в качестве делегата после его создания, но до его представления:

modalController = [[ModalController alloc] initWithNibName:@"ModalController];
modalController.loginDelegate = self;
[self presentModalViewController:modalController];
person jrturton    schedule 27.10.2011