如何在执行segue之前获取UITableView中的最后一个选定行

时间:2016-06-25 14:51:51

标签: ios xcode swift2 segue selecteditem

我在UITableView中插入了一个新行,现在我点击了另一个单元格(也通过调试器中的断点突出显示,之后只选择了点击的行):

enter image description here

新行(UITextField)的文本为“new”,所选单元格的标题为“Hobby”

在点击现在选中的行/单元格“Hobby”时,我必须将一个segue激发到另一个TableViewController(ColumnViewController)

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if self.currentEdit != nil {
        self.currentEdit.resignFirstResponder()
    }
    if segue.identifier == "SetupColumn" {
        let cell = sender as! EditCell
        let destControlller = segue.destinationViewController as! ColumnViewController
        destControlller.kategorieID = cell.nameField.tag
    }
}

但我必须知道,行/单元“Hobby”被点击,因为我必须在调用segue之前弹出警报。我必须知道,该行与添加的行不同,而不是哪个行被点击。

self.currentEdit包含实际选择的TextField,但我只有添加的行。 : - (

更新

我得到了 beyowulf 的答案,你可以在下面看到。我想,问题已经解决了,但是在玩了一段时间后,我突然(!?)得到了错误

  

应用程序由于未捕获的异常'NSInvalidArgumentException',原因:'Receiver()没有带标识符的segue'SetupColumn''

beyowulf的答案是:

 Don't connect your segue to the your table view cells. Connect it to your view controller then call it explicitly when you want to segue

我现在的问题是:如何将我的segue连接到视图控制器,而不是将其连接到表格视图

2 个答案:

答案 0 :(得分:2)

tableView.indexPathForSelectedRow能满足您的需求吗?

要从视图控制器添加segue,请右键单击它并选择" Triggered Segues",然后从'手册'划到segue的目的地。

答案 1 :(得分:0)

帮助别人,和我一样愚蠢; - )

解决方案见于 beyowulf Meriw

我必须从我的SetUpViewController(源代码)和ColumnViewController(目标)添加 Manual Segue ,如屏幕截图所示 enter image description here

并将其命名为 SetupColumn

enter image description here

然后我只需要添加

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    self.performSegueWithIdentifier("SetupColumn", sender:tableView.cellForRowAtIndexPath(indexPath))
}