2012-12-21 131 views
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' 
+0

发布了didSelectRowAtIndexPath方法的代码 –

+0

[self performSegueWithIdentifier:@“EventDetails”sender:nil]; –

回答

1

这看起来像你可能会缺少一个视图控制器。

具体来说,您应该有一些类似:

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

假设你正在创建一个故事板,导航控制器可可以通过选择表格视图控制器并选择编辑器>嵌入>导航控制器轻松添加。另外,如果您希望导航控制器仅用于嵌入视图控制器对象中的表视图,我建议在视图控制器中创建容器视图以显示表视图和关联的导航控制器。

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

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

1

我想在这里你不能使用UINavigationController作为RootViewController ..和使用UIViewController作为RootViewController的..所以可能是这个问题,此错误

刚刚尝试按照此步骤输出..

  1. 将一个新的导航控制器到你的storyboar d - 它会默认连接到的tableview控制器

  2. 删除的tableview控制器右击navgiation控制器上,而“根视图控制器”属性条目连接到现有的视图控制器

  3. 移动从你的视图控制器点箭头根视图控制器

UPDATE:

看到这个例子通过你可以把验证,并明确推入你的详细视图...

- (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; 
    } 
} 
+0

你现在的视图控制器是什么意思?登录视图或具有表视图的视图? –

+0

将属性设置为loginview控制器伙计... –

+0

完成并失败。 –