0

我正在使用核心数据和导航控制器。我的故事板由以下部分组成:(-> 表示已连接) UINavigationController -> UIViewController -> UITableViewController(主视图控制器)-> UITableViewController(详细视图控制器)Apple 的 Master-Detail 模板在 appDelegate 方法应用程序中提供以下内容:didFinishLoadingWithOptions 其中仅当情节提要包含 UINavigationController -> UITableViewController 时才真正起作用

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

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

controller.managedObjectContext = self.managedObjectContext;

这在我的情况下不起作用,因为 navigation.topViewController 将返回 UIView 控制器。那么我怎样才能从 application:didFinishLoadingMethod 到达第三个视图 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 回答