3

Я использую tab bar controller в сочетании с core data. Каждый из разных вкладок должен иметь доступ к NSManagedObjectContext, однако я не хочу использовать синглтон или просто вытаскивать их с app delegate. Есть ли способ передать их в контроллер просмотра программно из app delegate, когда приложение загружается?Как передать NSManagedObjectContext для просмотра контроллеров при использовании раскадровки (iOS)

+0

Просто добавьте свойство 'managedObjectContext' к каждому контроллеру представления и задайте значение при создании контроллера панели вкладок, например. в 'didFinishLaunchingWithOptions'. –

+0

Спасибо - поскольку я использую раскадровку, я не вручную создаю VC. Они уже созданы ... –

+0

ОК, но если у вас есть выход к контроллеру панели вкладок, вы можете получить доступ к его 'viewControllers' и установить свойство для каждого контроллера вида. - (Я не уверен, что это лучше, чем вытащить их из делегата приложения ...) –

ответ

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... 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^