我正在使用核心数据和导航控制器。我的故事板包含以下内容:( - >表示连接) 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?
答案 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;