Ios 核心数据:使用UITabBarController从AppDelegate为应用程序设置托管对象上下文
我通常使用Ios 核心数据:使用UITabBarController从AppDelegate为应用程序设置托管对象上下文,ios,objective-c,core-data,Ios,Objective C,Core Data,我通常使用AppDelegate.h中的以下代码为根视图设置managedObjectContext: UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; HomeViewController *controller = (HomeViewController *)navigationController.topViewController
AppDelegate.h
中的以下代码为根视图设置managedObjectContext
:
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
HomeViewController *controller = (HomeViewController *)navigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
但是我当前的应用程序在根目录下包含一个自定义的
uitabarcontroller
,然后是UINavigationController
,然后是UIViewController
。如何将managedObjectContext
设置为视图控制器?您也可以这样做
UITabBarController *tabController = (UITabBarController *)self.window.rootViewController;
// index 0 means left-most tab
UINavigationController *navigationController = (UINavigationController *)tabController.viewControllers[0];
HomeViewController *controller = (HomeViewController *)navigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
或者,我更喜欢:
在HomeViewController中执行以下操作:
#import "AppDelegate.h"
// somewhere (e. g. awakeFromNib, loadView or viewDidLoad)
self.managedObjectContext = ((AppDelegate *) [UIApplication sharedApplication].delegate).managedObjectContext
在AppDelegate中,将
managedObjectContext
设置为公共属性。Thanx!成功了。我一直在尝试tabBController.selectedViewController
而不是tabController.viewControllers[0]
,但一直没有成功。