Я использую tab bar controller
в сочетании с core data
. Каждый из разных вкладок должен иметь доступ к NSManagedObjectContext
, однако я не хочу использовать синглтон или просто вытаскивать их с app delegate
. Есть ли способ передать их в контроллер просмотра программно из app delegate
, когда приложение загружается?Как передать NSManagedObjectContext для просмотра контроллеров при использовании раскадровки (iOS)
Q
Как передать NSManagedObjectContext для просмотра контроллеров при использовании раскадровки (iOS)
3
A
ответ
2
Если у вас есть приложение на основе вкладок в раскадровке, rootViewController этого окна будет UITabBarController
. Оттуда вы можете получить viewControllers, которые делают ваши вкладки.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
UIViewController *firstVC = tabBarController.viewControllers[0];
firstVC.managedObjectContext = self.managedObjectContext;
UIViewController *secondVC = tabBarController.viewControllers[1];
secondVC.managedObjectContext = self.managedObjectContext;
// more...
}
Просто добавьте свойство 'managedObjectContext' к каждому контроллеру представления и задайте значение при создании контроллера панели вкладок, например. в 'didFinishLaunchingWithOptions'. –
Спасибо - поскольку я использую раскадровку, я не вручную создаю VC. Они уже созданы ... –
ОК, но если у вас есть выход к контроллеру панели вкладок, вы можете получить доступ к его 'viewControllers' и установить свойство для каждого контроллера вида. - (Я не уверен, что это лучше, чем вытащить их из делегата приложения ...) –