这里有新手的问题。
由于XCode不为带有Core Data的TabBased应用程序提供项目模板,因此我必须将Core Data堆栈从其他模板切割并粘贴到我的TabBased应用程序。
这是在Master-Detail应用程序模板中将NSManagedObjectContext
对象从AppDelegate
分配到MasterViewController
的方法:
// AppDelegate.m (Master-Detail template)
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
UINavigationController *navigationController =
(UINavigationController *)self.window.rootViewController;
MasterViewController *controller =
(MasterViewController *)navigationController.topViewController;
controller.managedObjectContext = self.managedObjectContext;
return YES;
}
如何从NSManagedObjectContext
将AppDelegate
分配给基于TabBased的应用程序中的ViewControllers?
答案 0 :(得分:1)
如果标签栏控制器是根视图控制器和 “主视图控制器”位于第一个选项卡上:
UITabBarController *tbc = (UITabBarController *)self.window.rootViewController;
MasterViewController *controller = (MasterViewController *)tbc.viewControllers[0];
controller.managedObjectContext = self.managedObjectContext;
更新:如果第一个标签使用导航控制器,则只需插入一步:
UITabBarController *tbc = (UITabBarController *)self.window.rootViewController;
UINavigationController *nc = tbc.viewControllers[0];
YourViewController controller = (YourViewController *)nc.topViewController;
controller.managedObjectContext = self.managedObjectContext;
答案 1 :(得分:0)
在View Controller上创建一个属性:
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext
然后说,例如,您想为所有视图控制器分配它。您可以通过循环遍历UITabBarController的viewControllers来完成它。
UITabbarController *tabBarController = (UITabBarController *)self.window.rootViewController;
for (UIViewController *viewController in tabBarController.viewControllers) {
viewController.managedObjectContext = self.managedObjectContext
}