我正在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.
为什么会发生这种情况
答案 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;