1

我在应用程序的开头有一个登录视图控制器。然后,一旦用户登录成功,我就会将用户带到其中包含表格视图的视图。我已将表格视图嵌入到导航控制器中。我有一个将用户推送到详细视图的 segue。但是,只要单击行单元格,就会出现以下错误。

'Could not find a navigation controller for segue 'Event Details'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.''

但正如我上面所说,有一个嵌入表格视图的导航视图控制器。是什么导致了这个错误?

该应用程序的流程如下

'->Login View     NavigatinViewController->(View with a table View inside)->Details'
4

2 回答 2

1

我认为在这里您不用UINavigationControllerRootViewController.. 而您UIViewController用作 rootViewController.. 所以这个错误可能是这个问题

只需尝试按照此步骤进行输出..

  1. 将一个新的导航控制器拖到您的故事板中 - 默认情况下,它将附加到一个 tableview 控制器

  2. 删除 tableview 控制器右键单击导航控制器,并将“根视图控制器”属性连接到现有视图控制器

  3. 将入口点箭头从视图控制器移动到根视图控制器

更新:

看看这个例子,你可以通过它进行验证并清楚地推送到你的详细视图中......

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"AddPlayer"])
    {
        UINavigationController *navigationController = 
          segue.destinationViewController;
        PlayerDetailsViewController 
          *playerDetailsViewController = 
            [[navigationController viewControllers] 
              objectAtIndex:0];
        playerDetailsViewController.delegate = self;
    }
}
于 2012-12-21T07:49:37.363 回答
1

看起来您可能缺少视图控制器。

具体来说,你应该有类似的东西:

登录视图 > 导航控制器 > 表视图控制器 > 详细视图控制器

假设您正在创建故事板,可以通过选择表视图控制器并选择编辑器 > 嵌入 > 导航控制器来轻松添加导航控制器。

或者,如果您希望导航控制器仅用于嵌入在视图控制器对象中的表视图,我建议在视图控制器中创建一个容器视图以显示表视图和关联的导航控制器。

要完成后者,请将容器对象拖入视图控制器并调整其大小以适合您要显示的表格视图。删除容器视图自动创建的视图控制器。

接下来,创建一个表视图控制器并从容器视图中转到它。这个转场将是一个“嵌入”转场。最后,您可以将刚刚创建的表格视图控制器嵌入到导航控制器中,并将来自表格视图控制器的 push segue 添加到详细视图控制器中。

于 2012-12-21T07:52:21.540 回答