我在应用程序的开头有一个登录视图控制器。然后,一旦用户登录成功,我将用户带到其中包含表视图的视图。我已将表视图嵌入导航控制器中。我有一个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 :(得分:1)
我认为你不要将UINavigationController
用作RootViewController
..并且使用UIViewController
作为rootViewController ..所以这个错误可能是这个问题
尝试按照以下步骤进行输出..
将新的导航控制器拖到故事板中 - 默认情况下会将其附加到tableview控制器
删除tableview控制器右键单击导航控制器,并将“Root View Controller”属性连接到现有的视图控制器
将入口点箭头从视图控制器移动到根视图控制器
<强>更新强>
请参阅此示例,通过您可以进行验证并清楚地推送您的详细视图......
- (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;
}
}
答案 1 :(得分:1)
看起来你可能错过了一个视图控制器。
具体来说,你应该有类似的东西:
登录视图&gt;导航控制器&gt;表视图控制器&gt;细节视图控制器
假设您正在创建故事板,可以通过选择表视图控制器并选择编辑器&gt;轻松添加导航控制器。嵌入&gt;导航控制器。
或者,如果您希望导航控制器仅用于嵌入在视图控制器对象中的表视图,我建议在视图控制器中创建容器视图以显示表视图和关联的导航控制器。
要完成后者,请将容器对象拖到视图控制器中并调整其大小以适合要显示的表视图。删除容器视图自动创建的视图控制器。
接下来,创建一个表视图控制器并从容器视图中对其进行segue。这个segue将是一个'嵌入'segue。最后,您可以将刚刚创建的表视图控制器嵌入到导航控制器中,并将push segue从表视图控制器添加到详细视图控制器。