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拖动segue,而不是从单元格中。 然后,您可以通过performSegueWithIdentifier
在didSelectRowAtIndexPath
以其标识符执行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?) { }