我有一个容器视图中的tableview。当用户选择任何行时,在父控制器中调用一个方法,该方法告诉父控制器执行segue。但是,我无法弄清楚它为什么不起作用。代码从tableView中的didSelectRow -function调用。该方法确实执行,但它给出了一个关于没有带有该标识符的segue的错误。
但是,当我从父视图控制器中调用方法(listJobsOfSite)时,它可以工作。
(tableview中)
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self.jobVC listJobsOfSite:@"locPwn"];
}
父视图控制器
-(void)listJobsOfSite:(NSString *)site
{
[self performSegueWithIdentifier:@"JobSegue2" sender:nil];
}
编辑: segue位于视图控制器1和视图控制器2之间。视图控制器1保持容器视图,其再次保持表视图控制器。该tableview控制器应该告诉视图控制器1进入视图控制器2。
答案 0 :(得分:2)
你不打电话给班级。你正在寻找的是"方法。"您调用您的父视图控制器类中的listJobsOfSite 方法。
您确定已给segue一个标识符吗?在你的故事板中,你应该点击segue,检查它,然后输入" JobSegue2"在标有"标识符的字段中。"
如果您已完成第2步,是否需要容器视图?你想用Container View + TableView完成什么?如果没有容器视图和TableView作为View Controller 1的属性,听起来你的设计会更有意义。
如果您的心脏被设置为使用容器视图,请在Storyboard中尝试从TableView单元格中控制+拖动到视图控制器2.命名为segue" JobSegue2。"然后,您不需要调用didSelectRow方法中的任何方法。你也不需要从View Controller 1到2的故事板segue。似乎this question有你想要的行为(问题,而不是答案!他遇到了相反的问题)。
编辑:刚刚注意到您的容器视图中有一个导航控制器,因此我上面的建议可能会在容器视图中推送View Controller 2。我完全不知道你要做什么。