2013-08-04 30 views
3

我正在使用tab bar controllercore data一起使用。每個不同的標籤都需要訪問NSManagedObjectContext,但我不想使用單例或將其從app delegate上拉下來。當應用程序加載時,有沒有辦法將它們從app delegate以編程方式傳遞給視圖控制器?如何使用故事板(iOS)時將NSManagedObjectContext傳遞給視圖控制器

+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... 
} 
相關問題