0

我正在尝试传递managedObjectContext(MOC)通过多个视图的“传递接力棒”方法。我已将它成功传递给rootViewController。从那里我通过presentViewController移动到tabBarController。当我推送tabBarController时,我似乎无法找到通过MOC的方法。通过presentViewController传递managedObjectContext

AppDelegate.m

UIViewController *navigationController = (UIViewController *)self.window.rootViewController; 
MyViewController *controller = (MyViewController *) navigationController; 
controller.managedObjectContext = managedObjectStore.mainQueueManagedObjectContext; 

的主视图控制器基本上是一个启动画面会踢你进入登录界面,或者如果您已经登录到tabBarController。以下是我从viewDidAppear方法转换到tabBarController的地方。

MyViewController.m

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; 
UIViewController *mainTabVC = [storyboard instantiateViewControllerWithIdentifier:@"mainTabVC"]; 
[mainTabVC setModalPresentationStyle:UIModalPresentationFullScreen]; 
[self presentViewController:mainTabVC animated:NO completion:nil]; 

的tabBarController在故事板具有标识符 “mainTabVC”。

我已经试过线,如

MyTabBarController.managedObjectContext = self.managedObjectContext; 

,但我得到的错误属性“MOC”的类型MyTabBarController的对象没有找到,即使我确实有MyTabBarController.h

声明的特性都可有人向我展示一行代码,我可以在这段代码中将这些代码推送到标签栏控制器。

顺便说一句,我在这个应用程序中使用RestKit,如果这改变了我应该处理的方式,请让我知道。

** * **解决方案* ** * ****

为了使事情对同一个问题的任何其他新人清晰。我从这个去:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; 
    UIViewController *mainTabVC = [storyboard instantiateViewControllerWithIdentifier:@"mainTabVC"]; 
    [mainTabVC setModalPresentationStyle:UIModalPresentationFullScreen]; 
    [self presentViewController:mainTabVC animated:NO completion:nil]; 

要这样:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil]; 
    MyTabBarViewController *mainTabVC = [storyboard instantiateViewControllerWithIdentifier:@"mainTabVC"]; 
    mainTabVC.managedObjectContext = self.managedObjectContext; 
    [mainTabVC setModalPresentationStyle:UIModalPresentationFullScreen]; 
    [self presentViewController:mainTabVC animated:NO completion:nil]; 

请注意,在第三行的分配,在第二行中使用MyTabBarViewController而不是UIViewController中。 BIG再次感谢rdelmar

回答

0

你的代码有点混乱。 MyTabBarController是类吗?它看起来像mainTabVC是你的实例。您应该使用该类而不是类,并且应该在将mainTabVC实例化为MyTabBarController而不是UITabBarController时更改类型。你也不需要像你这样做故事板,你可以使用self.storyboard。

MyTabBarController *mainTabVC = [self.storyboard instantiateViewControllerWithIdentifier:@"mainTabVC"]; 
    mainTabVC.managedObjectContext = self.managedObjectContext; 
    [mainTabVC setModalPresentationStyle:UIModalPresentationFullScreen]; 
    [self presentViewController:mainTabVC animated:NO completion:nil]; 
+0

哇,谢谢rdelmar工作正是我需要它。我花了整整一个晚上(在发布问题之前)尝试在该块的第二行中完全相同的行(以及其他许多行)。我失败的地方是在第一行使用UIViewController类而不是我的“MyTabBarController”子类!我非常感谢这一点,因为这对我来说很明显! – Ben 2013-05-03 23:29:30