0

私はコアデータとナビゲーションコントローラーを使用しています。私のストーリーボードは次のもので構成されています:(->接続されていることを意味します)UINavigationController-> UIViewController-> UITableViewController(マスタービューコントローラー)-> UITableViewController(詳細ビューコントローラー)Appleのマスター-詳細テンプレートは、appDelegateメソッドアプリケーションで次のものを提供します:実際には、ストーリーボードにUINavigationController->UITableViewControllerが含まれている場合にのみ機能します

UINavigationController *navigationController = (UINavigationController *) self.window.rootViewController;

SSViewController *controller = (SSViewController *)navigationController.topViewController;

controller.managedObjectContext = self.managedObjectContext;

私の場合、navigation.topViewControllerがUIView Controllerを返すため、これは機能しません。では、application:didFinishLoadingMethodから3番目のビューUITableViewControllerに到達するにはどうすればよいですか?

4

1 に答える 1

0

「接続」とは、ストーリーボードのセグエを意味する場合 (これは、質問を解釈するために私が見ることができる唯一の論理的な方法です)、答えは直接できないということです。

代わりに、サブクラスにプロパティを設定しUIViewController(必要に応じてデフォルトのマスター VC や詳細 VC が何であれ)、それをメソッドUIViewController内のチェーンのさらに下にあるサブクラスに渡しprepareForSegueます。

適切な VC が採用するプロトコルを介してこれを実装すると便利なことがよくあります。

@protocol ContextHolder <NSObject>

@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;

@end

ではprepareForSegue、次のことができます。

((id<ContextHolder>)segue.destinationViewController).managedObjectContext = self.managedObjectContext;
于 2013-02-28T12:46:09.013 に答える