使用情节提要(iOS)时如何将 NSManagedObjectContext 传递给视图控制器

Posted

技术标签:

【中文标题】使用情节提要(iOS)时如何将 NSManagedObjectContext 传递给视图控制器【英文标题】:How to pass NSManagedObjectContext to view controllers when using storyboard (iOS) 【发布时间】:2013-08-04 11:16:14 【问题描述】:

我将tab bar controllercore data 结合使用。每个不同的选项卡都需要访问NSManagedObjectContext,但是我不想使用单例或只是将它们从app delegate 中拉出来。有没有办法在应用加载时以编程方式将它们从app delegate 传递给视图控制器?

【问题讨论】:

只需在每个视图控制器中添加一个属性managedObjectContext,并在创建标签栏控制器时设置该值,例如在didFinishLaunchingWithOptions. 谢谢 - 因为我使用的是故事板,但我不会手动创建 VC。它们已经创建... 好的,但是如果你有一个标签栏控制器的出口,那么你可以访问它的viewControllers 并为每个视图控制器设置属性。 - (我不确定这是否比从应用程序委托中提取它们更好......) 【参考方案1】:

如果您在情节提要中有一个基于选项卡的应用程序,则窗口的 rootViewController 将是 UITabBarController。从那里您可以获取构成选项卡的视图控制器。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    UIViewController *firstVC = tabBarController.viewControllers[0];
    firstVC.managedObjectContext = self.managedObjectContext;
    UIViewController *secondVC = tabBarController.viewControllers[1];
    secondVC.managedObjectContext = self.managedObjectContext;
    // more...

【讨论】:

以上是关于使用情节提要(iOS)时如何将 NSManagedObjectContext 传递给视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

对于 iOS,我可以混合和匹配以编程方式添加视图并同时使用情节提要吗?

使用情节提要的 iOS 主从应用程序

iOS:如何以编程方式将视图添加到情节提要视图

iOS 如何使用早期版本的 iOS 中不存在的情节提要元素?

如何使用情节提要 iOS7 调用 viewWillAppear

使用情节提要时iOS目标c中的合并冲突是啥