Ios 未从自定义uitableviewcell调用prepareForSegue

Ios 未从自定义uitableviewcell调用prepareForSegue,ios,uitableview,swift,Ios,Uitableview,Swift,我有一个带有自定义TableViewCell的自定义TableViewController。我在故事板上创建了一个从单元格到另一个ViewController的序列,以显示详细信息,但从未调用prepareForSegue。我尝试过使用DidSelectRowatineXpath,但它也没有被调用。我怀疑这可能是因为我动态创建了自定义单元,而它们没有从分配给它们的情节提要中获得序列,但我找不到这样做的方法。我的巴布托教派的“新闻节”通常被称为“新闻节” override func prepare

我有一个带有自定义TableViewCell的自定义TableViewController。我在故事板上创建了一个从单元格到另一个ViewController的序列,以显示详细信息,但从未调用prepareForSegue。我尝试过使用DidSelectRowatineXpath,但它也没有被调用。我怀疑这可能是因为我动态创建了自定义单元,而它们没有从分配给它们的情节提要中获得序列,但我找不到这样做的方法。我的巴布托教派的“新闻节”通常被称为“新闻节”

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
    println("PREPARE FOR SEGUE")
    if segue.identifier == "newSegue" {
        println("PREPARE FOR NEW SEGUE")
    } else if segue.identifier == "detailSegue" {
        println("PREPARE FOR DETAIL SEGUE")
    }
}

override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
    println("You selected cell!")
}
我怀疑我在定义自定义单元格时可能做错了什么:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let CellIndentifier: NSString = "ListPrototypeCell"

    var cell : MyTableViewCell = tableView.dequeueReusableCellWithIdentifier(CellIndentifier) as MyTableViewCell

    var myClass: MyClass = self.myList.objectAtIndex(indexPath.row) as MyClass

    cell.setCell(author: myClass.author, message: myClass.message)

    return cell

}

有帮助吗?

从InterfaceBuilder中的TableViewController中拖动序列,而不是从单元格中拖动序列。然后,您可以通过
performsguewithidentifier
didSelectRowAtIndexPath
中使用其标识符执行序列

还要检查函数签名。隐式展开选项不再需要感叹号:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    let cell = tableView.cellForRowAtIndexPath(indexPath)
    tableView.deselectRowAtIndexPath(indexPath, animated: true)
    performSegueWithIdentifier("mySegue", sender: cell)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
}

这是一个解决方案,而不是OP问题的解决方案。这是行不通的,因为OP说没有调用DidSelectRowatineXpath。我也尝试过这一方法,但正如我所说的,没有调用DidSelectRowatineXpath。该单元格在MyTableViewCell.swift中定义。我不知道这是否会导致问题。您的
didSelectRowAtIndexPath
签名不正确,因此不会调用它。检查上面的示例代码。你必须去掉感叹号。代码签名在Xcode的beta测试阶段发生了更改,自动代码完成仍然不正确。我删除了感叹号,仍然没有调用它。我怀疑在定义自定义单元格时可能遗漏了一些内容。我将把代码添加到原始问题中。
prepareforsque
:删除感叹号。我已经更新了上面的答案。您是否将此代码所在的控制器设置为表视图的委托(如果您的类是UITableViewController的子类,则应自动设置)?您的单元格中是否有可能拦截触摸的视图?是的,我将其设置为代理。单元格有自己的自定义视图,但我无法从视图或标签创建序列。您必须从单元格本身进行连接,而不是从内容视图或标签进行连接。如果你无法从画布上抓取单元格,那么转到左侧的场景列表,从单元格中拖动。这正是我所做的。我从手机上接通了,但segue没有启动。我想在我的cell类中附加一个点击手势事件,但我不认为这是合适的解决方案。听起来你的设置是正确的,所以在没有看到你的项目的情况下很难说是什么问题。如果你能把它贴到某个地方或发电子邮件给我,我很乐意看一看。