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;
}
是否需要將managedObjectContext傳遞給第二個視圖控制器?因爲當使用Storyboard時,你通常不會與那裏的初始視圖控制器混淆,所以你讓故事板處理它。 –
是的,並且當您引用rootViewController時 - storyboard假定這是介紹控制器。 –
在這種情況下,您可能只需要改變應用的組織方式。而不是依靠應用程序委託類來管理managedObjectContext,而是創建另一個類來完成它,並直接從您的表視圖控制器類中引用該類。這樣的事情:http://stackoverflow.com/questions/14350915/most-efficient-way-of-passing-data-between-views/14351026#14351026 –