我有一个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做类似的事情,所以我需要能够处理推送场景的三个级别的东西。
答案 0 :(得分:1)
问题是segue连接到包含容器视图的视图控制器,而不是内部的UITableViewController。您可以在UIViewController中实现UITableViewDatasource
和UITableViewDelegate
来处理tablew视图内容并删除额外的表视图控制器。