Reputation: 238
I usually set the managedObjectContext
for the root view using the following code in AppDelegate.h
:
UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
HomeViewController *controller = (HomeViewController *)navigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
But my current application contains a custom UITabBarController
at the root followed by a UINavigationController
and then the UIViewController
. How do I set the managedObjectContext
to the view controller?
Upvotes: 0
Views: 872
Reputation: 6190
You can do it very similar
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;
Or, what I prefer:
In your HomeViewController do
#import "AppDelegate.h"
// somewhere (e. g. awakeFromNib, loadView or viewDidLoad)
self.managedObjectContext = ((AppDelegate *) [UIApplication sharedApplication].delegate).managedObjectContext
And in your AppDelegate make managedObjectContext
a public property.
Upvotes: 1