StoryBoard无法推送segue与找不到segue的导航控制器

时间:2014-06-01 09:32:49

标签: objective-c xcode storyboard

enter image description here

我有一个UIViewController,里面有一个容器视图。 在容器视图中,我嵌入了一个名为CategoryTableViewControler的UITableViewController。

CategoryTableViewControler加载用于显示行的数据,并在单击一个单元格时使用

推送新的CategorySecondViewController
         [self performSegueWithIdentifier:@"CatOneToTwo" sender:self];

当我尝试这样做时,我收到一个错误:

*** Terminating app due to uncaught exception 'NSGenericException', reason: 'Could not find a navigation controller for segue 'CatOneToTwo'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.'

我从论坛上了解到这是因为缺少UINavigationController,但这是存在的。 我猜测在这种情况下,Container视图中的第一个CategoryTableViewController无法访问NavigationController。

我找到了以下代码来证明这是在CategoryTableViewController中的:

    // Perform Segue
if (self.navigationController.visibleViewController == self) {
    [self performSegueWithIdentifier:@"CatOneToTwo" sender:self]; //<<does not get here
}

所以问题是如何在这里访问NavigationController?

从图像中可以看出,CategorySecondViewController也将使用CategoryThirdViewController做类似的事情,所以我需要能够处理推送场景的三个级别的东西。

1 个答案:

答案 0 :(得分:1)

问题是segue连接到包含容器视图的视图控制器,而不是内部的UITableViewController。您可以在UIViewController中实现UITableViewDatasourceUITableViewDelegate来处理tablew视图内容并删除额外的表视图控制器。