Swift表视图控制器Segue不能自动工作

时间:2016-03-17 19:38:03

标签: ios swift uistoryboard

采取的步骤:

  1. 创建新的单一视图项目
  2. 删除默认视图控制器
  3. 添加了新的表格视图控制器
  4. 嵌入式TVC到导航控制器
  5. 添加了儿童TVC
  6. 添加了自定义类文件并与每个TVC相关联
  7. 创建了从第一个TVC到孩子的Show segue
  8. 实现了必需的方法,#of sections,#of rows,cellForRowAtIndexPath
  9. 我在线观看和阅读的所有教程仅包括我上面显示的步骤,并且segue开始正常工作。但是,在我的情况下,在添加以下内容之前我无法使其工作:

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
            performSegueWithIdentifier("detail", sender: tableView)
    }
    

    如果需要,我完全可以实现didSelectRowAtIndexPath方法。我只是想知道我是否遗漏了一些东西,因为它似乎在我在网上看到的所有内容中自动生效。

    提前致谢!

2 个答案:

答案 0 :(得分:0)

如果单击segue(故事板)并在侧面菜单上,则必须分配文本" detail"从

performSegueWithIdentifier("detail", sender: tableView)
标识符字段

如下图所示

enter image description here

修改

尝试上面的代码,然后将NAME_OF_THE_DETAIL_VIEW_CONTROLLER更改为您的Detail ViewController。

在此代码中,我们设置了" self "在 performSegueWithIdentifier 之前。单击该按钮时,将 segue.destinationViewController 设置为新的ViewController。

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    self.performSegueWithIdentifier("detail", sender: indexPath);
}


override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
    if (segue.identifier == "detail") {
        var detailView =  segue.destinationViewController as! NAME_OF_THE_DETAIL_VIEW_CONTROLLER 
    }
}

答案 1 :(得分:0)

谢谢大家的贡献。我发现问题是cellForRowAtIndexPath tableView函数中缺少以下内容。

let cell = self.tableView.dequeueReusableCellWithIdentifier("custom", forIndexPath: indexPath) as! CustomCell

我把这条线注释掉了,主要是因为我不知道它做了什么。 :)