我正在尝试传递接力棒"通过多个视图传递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 !
答案 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];