通过presentViewController传递managedObjectContext

时间:2013-05-03 02:19:04

标签: ios dependency-injection restkit-0.20 managedobjectcontext

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

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中声明了属性

有人可以向我展示一行代码,我可以在这个代码中将MOC推送到标签栏控制器。

BTW-我在这个应用程序中使用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。再次感谢 rdelmar

1 个答案:

答案 0 :(得分: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];