将self.managedObjectModel连接到一个类

时间:2013-02-28 12:42:07

标签: ios objective-c xcode

我正在使用核心数据和导航控制器。我的故事板包含以下内容:( - >表示连接)  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控制器。那么如何从应用程序到达第三个视图UITableViewController:didFinishLoadingMethod?

1 个答案:

答案 0 :(得分:0)

如果通过'连接'表示故事板上的segues(这是我能看到解释你的问题的唯一逻辑方式),那么答案是你不能直接。

相反,您在UIViewController子类上设置了属性(无论默认的主要和/或详细信息VC是什么),并将其传递到UIViewController子类的下一个链中。 prepareForSegue方法。

通过协议实现这一点通常很有用,适当的VC采用:

@protocol ContextHolder <NSObject>

@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;

@end

prepareForSegue中,您可以执行以下操作:

((id<ContextHolder>)segue.destinationViewController).managedObjectContext = self.managedObjectContext;