I have an iPhone application that has a MainWindow.xib holding a UITabBarController, which in turn has a UINavigationController and a custom UIViewController subclass in its
Ideally you want to pass either the NSManagedObjectContext
, NSFetchedResultsController
or the relevant NSManagedObject
"down" into the UIViewController
. This allows the "parent" to control the "child" and determine what the child should have. This creates a more loosely coupled design and allows you to easily re-arrange UIViewController
instances as needed. It also makes it easier to reuse a UIViewController
.
In a tab view design it is no different. Your AppDelegate passes the NSManagedObjectContext
to whoever is responsible for creating the initial UIViewController
instances that go into the UITabBarController
. In turn that creator passes the relevant information (NSManagedObject
, NSFetchedResultsController
, and/or NSManagedObject
instances) into the UIViewController
instances as it is constructing them.