Проблема в том, что self.parentViewController имеет тип "UIViewController", а ваш метод -loadInitialData не существует в UIViewController. Существует несколько распространенных способов решения этой проблемы ... от самого простого и наименее «правильного» до наиболее сложного и наиболее «правильного»:
1) Сначала вам нужно привести ваш self.parentViewController к типу родительского контроллера представления. Что-то вроде:
MyParentViewController *parentVC = (MyParentViewController*)self.parentViewController;
[parentVC loadInitialData];
2) Вы можете добавить свойство к вашему контроллеру модального представления, которое явно хранит ссылку на ваш родительский контроллер представления, и затем вызвать loadInitialData, делая это.
@interface MyModalViewController : UIViewController {
MyParentViewController *myParentViewController;
}
@property (nonatomic, retain) MyParentViewController *myParentViewController;
Тогда вы можете позвонить:
[self.myParentViewController loadInitialData];
3) Самый сложный, но самый правильный способ сделать это - создать протокол Delegate, заставить ваш ParentViewController реализовать протокол, и чтобы ваш модальный контроллер представления сохранял ссылку на делегат и вызывал этот путь. Что-то вроде:
@protocol ManageDataDelegate
- (void) loadInitialData;
@end
@interface MyParentViewController : UIViewController <ManageDataDelegate> { ...
@interface MyModalViewController : UIViewController {
id<ManageDataDelegate> delegate;
}
@property (nonatomic, assign) id<ManageDataDelegate> delegate;
Когда вы представляете свой контроллер модального вида, просто установите делегата. В вашем MyParentViewController:
MyModalViewController *vc = [[MyModalViewController alloc] init];
vc.delegate = self;
[self presentModalViewController:vc];
Тогда в вашем контроллере модального вида вы можете перезвонить так:
[self.delegate loadInitialData];