Передача 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];
Другие вопросы по тегам