尝试将managedObjectContext从GameAppDelegate传递到嵌入在NavigationController中的视图

时间:2013-06-02 15:04:39

标签: ios objective-c uinavigationcontroller nsmanagedobjectcontext

我正在GameAppDelegate中创建我的managedObjectContext并将其传递给我的第一个未嵌入UINavigationController的ViewController(GameViewController),我想将我的managedObjectContext传递给嵌入在navigationController中的下一个视图。这是我在prepareForSegue中尝试做到的:

 UINavigationController *navController =(UINavigationController *)segue.destinationViewController;
((PickTypeViewController *)navController.viewControllers[0]).managedObjectContext=managedObjectContext;

然后我收到以下错误:

Game[17878:c07] Uncaught exception: Could not find a navigation controller for segue 'Play'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.

为什么会发生这种情况

1 个答案:

答案 0 :(得分:1)

正如错误消息所示:如果你想使用来自GameViewController的push segue,源控制器(GameViewController)需要由UINavigationController管理。

您需要将UINavigationController嵌入到GameViewController中,而不是第二个视图控制器。如果要在GameViewController中隐藏导航栏,可以这样做:iPhone hide Navigation Bar only on first page

之后,您需要修改prepareForSegue方法,尤其是您获得segue.destinationViewController的部分。它将直接为您提供PickTypeViewController实例。

PickTypeViewController *pickTypeViewController = (PickTypeViewController *)segue.destinationViewController;