2013-01-22 43 views
0

我正在使用具有初始介紹視圖控制器的故事板,我想要將其展開到具有核心數據的表視圖控制器。我知道最初的控制器是根控制器,但我需要第二個控制器作爲連接到核心數據的根。當我這樣做在我的應用程序委託,我得到這個錯誤:iOS Storyboard介紹視圖,然後是核心數據表視圖

 
-[IntroViewController setViewControllers:]: unrecognized selector sent to instance 0x7465b70 
2013-01-21 22:29:15.331 PManager[35522:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[IntroViewController setViewControllers:]: unrecognized selector sent to instance 0x7465b70' 

我的第一個觀點被稱爲「introController」在故事板。

我的第二個視圖是掛鉤到故事板中名爲「listController」的核心數據的表視圖。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)options 
{ 

    // Get a reference to the navigation controller first 
    UINavigationController *navigationController = (UINavigationController *) self.window.rootViewController; 

    IntroViewController *introController = [navigationController.storyboard instantiateViewControllerWithIdentifier:@"introController"]; 
    RootViewController *listController = [navigationController.storyboard instantiateViewControllerWithIdentifier:@"listController"]; 

    // First item in array is bottom of stack, last item is top. 
    navigationController.viewControllers = [NSArray arrayWithObjects:listController, introController, nil]; 

    // THEN get the root view controller (RootViewController) 
    RootViewController *rootViewController = (RootViewController *)[[navigationController viewControllers] objectAtIndex:0]; 

    // And now pass the context 
    rootViewController.managedObjectContext = managedObjectContext; 

    [self.window makeKeyAndVisible]; 

    return YES; 
} 
+0

是否需要將managedObjectContext傳遞給第二個視圖控制器?因爲當使用Storyboard時,你通常不會與那裏的初始視圖控制器混淆,所以你讓故事板處理它。 –

+0

是的,並且當您引用rootViewController時 - storyboard假定這是介紹控制器。 –

+0

在這種情況下,您可能只需要改變應用的組織方式。而不是依靠應用程序委託類來管理managedObjectContext,而是創建另一個類來完成它,並直接從您的表視圖控制器類中引用該類。這樣的事情:http://stackoverflow.com/questions/14350915/most-efficient-way-of-passing-data-between-views/14351026#14351026 –

回答

0

改變應用的組織方式可能會更好。不要依賴應用程序委託類來管理managedObjectContext,而應該創建另一個類作爲單例,以 管理對全局託管對象上下文的訪問。直接從您的表視圖控制器類和其他任何其他引用該類。就像這樣:Most efficient way of passing data between views

相關問題