0

我在 GameAppDelegate 中创建我的 managedObjectContext 并将其传递给我的第一个 ViewController (GameViewController),它没有嵌入 UINavigationController,然后我想将我的 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.

为什么会这样

4

1 回答 1

1

正如错误消息所说:如果您想使用来自 GameViewController 的推送 segue,则源控制器(GameViewController)需要由 UINavigationController 管理。

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

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

PickTypeViewController *pickTypeViewController = (PickTypeViewController *)segue.destinationViewController;
于 2013-06-02T15:13:46.153 回答