Передача managedobjectContext в tabbarcontroller с контроллерами навигации в модальном представлении
Для небольшого приложения у меня есть экран входа в систему. На Auth представлен контроллер панели вкладок с двумя представлениями (один с контроллером навигации). Я следую этому уроку. Он использует основные данные. http://maybelost.com/2011/12/tutorial-storyboard-app-with-core-data/
Учебник называет Segue. Но я хотел бы использовать presentModalViewController. Это работает, за исключением того, что мне интересно, как передать managedObjectContext в View внутри Navigation Control внутри контроллера панели вкладок.
Я прочитал этот Passing ManagedObjectContext для просмотра контроллеров, используя раскадровки с корневым UITabBarController, но комментарии под вторым ответом говорят, что это неправильный метод.
Может кто-нибудь сказать мне правильный способ сделать это? Я ищу, чтобы узнать, как получить ссылку на представление внутри контроллера вкладок, чтобы я мог установить управляемый объектный текст для этого представления.
Спасибо
РЕДАКТИРОВАТЬ В appDelegate.h:
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext;
Мой appDelegate.m:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
LoginViewController *rootView = (LoginViewController *)self.window.rootViewController;
rootView.managedObjectContext = self.managedObjectContext;
}
1 ответ
На самом деле я обычно собираю контекст из tabBarController того представления, в котором вы находитесь. Например, в вашем viewWillAppear из представления в панели вкладок просто создайте экземпляр self.tabBarController и установите для этого контекста представления свой контекст. Таким образом, вы можете просто передать контекст tabBar, и каждое представление может ссылаться на контекст этого tabBar.
Что-то вроде этого.
MainTabBar *parentTabBarController = (MyTabBar *)self.tabBarController;
self.managedObjectContext = parentTabBarController.managedObjectContext;