0

我正在嘗試傳遞managedObjectContext(MOC)通過多個視圖的「傳遞接力棒」方法。我已將它成功傳遞給rootViewController。從那裏我通過presentViewController移動到tabBarController。當我推送tabBarController時,我似乎無法找到通過MOC的方法。通過presentViewController傳遞managedObjectContext

AppDelegate.m

UIViewController *navigationController = (UIViewController *)self.window.rootViewController; 
MyViewController *controller = (MyViewController *) navigationController; 
controller.managedObjectContext = managedObjectStore.mainQueueManagedObjectContext; 

的主視圖控制器基本上是一個啓動畫面會踢你進入登錄界面,或者如果您已經登錄到tabBarController。以下是我從viewDidAppear方法轉換到tabBarController的地方。

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

聲明的特性都可有人向我展示一行代碼,我可以在這段代碼中將這些代碼推送到標籤欄控制器。

順便說一句,我在這個應用程序中使用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中。 BIG再次感謝rdelmar

回答

0

你的代碼有點混亂。 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]; 
+0

哇,謝謝rdelmar工作正是我需要它。我花了整整一個晚上(在發佈問題之前)嘗試在該塊的第二行中完全相同的行(以及其他許多行)。我失敗的地方是在第一行使用UIViewController類而不是我的「MyTabBarController」子類!我非常感謝這一點,因爲這對我來說很明顯! – Ben 2013-05-03 23:29:30