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)가 위임 프로토콜을 작성하는 것입니다 할 가장 복잡하지만 가장 올바른 방법은, 당신의 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];
이 loadInitialData입니까? 제대로 구현되면 문제가 없어야합니다. 작동하지 않는 것은 무엇입니까? 너 뭐 해봤 니? 도움이 필요한 정보가 더 필요합니다. –