XCode 5使用prepareforsegue调用类

时间:2014-04-06 16:25:03

标签: ios

我有一个容器视图中的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。

编辑2: 截图http://tinypic.com/r/30x7dr9/8

1 个答案:

答案 0 :(得分:2)

  1. 你不打电话给班级。你正在寻找的是"方法。"您调用您的父视图控制器中的listJobsOfSite 方法

  2. 您确定已给segue一个标识符吗?在你的故事板中,你应该点击segue,检查它,然后输入" JobSegue2"在标有"标识符的字段中。"

  3. 如果您已完成第2步,是否需要容器视图?你想用Container View + TableView完成什么?如果没有容器视图和TableView作为View Controller 1的属性,听起来你的设计会更有意义。

  4. 如果您的心脏被设置为使用容器视图,请在Storyboard中尝试从TableView单元格中控制+拖动到视图控制器2.命名为segue" JobSegue2。"然后,您不需要调用didSelectRow方法中的任何方法。你也不需要从View Controller 1到2的故事板segue。似乎this question有你想要的行为(问题,而不是答案!他遇到了相反的问题)。

    编辑:刚刚注意到您的容器视图中有一个导航控制器,因此我上面的建议可能会在容器视图中推送View Controller 2。我完全不知道你要做什么。