Передача managedObjectContext через presentViewController
Я пытаюсь метод "передать эстафету" для передачи управляемого ObjectContext (MOC) через несколько представлений. Я успешно передал rootViewController. Оттуда я перехожу на вкладку BarController через presentViewController
, Я не могу найти способ передать MOC, когда нажатие tabBarController.
AppDelegate.m
UIViewController *navigationController = (UIViewController *)self.window.rootViewController;
MyViewController *controller = (MyViewController *) navigationController;
controller.managedObjectContext = managedObjectStore.mainQueueManagedObjectContext;
Контроллер основного вида - это, по сути, начальный экран, который выводит вас на экран входа в систему или, если вы уже вошли, в tabBarController. Ниже я перехожу к tabBarController изнутри viewDidAppear
метод.
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 в контроллер панели вкладок.
Кстати, я использую 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 ответ
Ваш код несколько сбивает с толку. Является ли 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];