prepareForSegue未从自定义uitableviewcell调用

fil*_*tto 5 uitableview ios swift

我有一个自定义TableViewController与自定义TableViewCell.我在故事板上创建了一个segue,从Cell到另一个ViewController来显示细节,但是从未调用prepareForSegue.我已经尝试过使用didSelectRowAtIndexPath但它没有被调用.我怀疑这可能是因为我动态创建了自定义单元格并且它们没有从分配给它们的故事板中获取segue,但我找不到这样做的方法.我的BarButtonItem中的"newSegue"被正常调用.

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!")
}
Run Code Online (Sandbox Code Playgroud)

我怀疑在定义自定义单元格时可能会出错:

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

}
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

zis*_*oft 3

从 InterfaceBuilder 中的 TableViewController 中拖动 Segue,而不是从单元格中拖动。didSelectRowAtIndexPath然后您可以使用via中的标识符执行segue performSegueWithIdentifier

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

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?) {
}
Run Code Online (Sandbox Code Playgroud)