prepareForSegue没有从自定义的uitableviewcell调用

我有一个自定义TableViewCell与自定义TableViewCell。 我在Cell的Storyboard上创build了一个segue,以显示细节,但prepareForSegue从来没有被调用过。 我试过使用didSelectRowAtIndexPath,但它也没有调用。 我怀疑这可能是因为我dynamic地创build了自定义单元格,并且他们没有从分配给他们的故事板中获得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!") } 

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

 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拖动se​​gue,而不是从单元格中。 然后,您可以通过performSegueWithIdentifierdidSelectRowAtIndexPath以其标识符执行segue。

同时检查function签名。 不再需要隐含解包选项的感叹号:

 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?) { }