問題は、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です:方法あなたの?それが正しく実装されている場合、これは何の問題もないはずです。何が動作していませんか?あなたは何を試しましたか?私たちは助けるためにもう少し情報が必要です。 –