单击按钮后获取表视图单元索引

时间:2015-08-22 13:20:29

标签: ios xcode swift

我正在尝试在表格视图中选择一个单元格,一旦我点击导航菜单中的“完成”按钮,我想println()该行的索引,例如0,1,2等

当你点击“完成”按钮时会触发一个segue,我想要抓住prepareForSegue

中的值

当我使用以下单击单元格时,我可以获取索引:

tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)

然后在该函数内部:

performSegueWithIdentifier("mySegue", sender: indexPath)

但我怎么能调整它来使用:

@IBAction func doneButtonDidTouch(sender: AnyObject) {
        performSegueWithIdentifier("mySegue", sender: self)
    }

2 个答案:

答案 0 :(得分:2)

您可以调用indexPathForSelectedRow来获取按钮处理程序中的indexPath:

@IBAction func doneButtonDidTouch(sender: AnyObject) {
    if let indexPath = self.tableView.indexPathForSelectedRow() {
        performSegueWithIdentifier("mySegue", sender: indexPath)
    }
}

如果在按下完成按钮时没有选定的行,则不会有indexPath并且不会发生segue。

答案 1 :(得分:0)

您可以创建一个类范围的变量,并在每次选择单元格时将单击的选定单元格的索引路径保存到它。然后传递该值以准备segue。但是要知道在传入的视图控制器上需要一个变量来接收你传递的值。

所以

var selectedRow

然后在里面

tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)

您可以为该变量指定行号或您可能希望从该行传递的任何其他值。

selectedRow = indexPath.row

最后当你单击完成按钮时,在准备segue时你可以使用segue.destinationViewController捕获传入的视图控制器

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

    if(segue.identifier == "mySegue") {

        var nextViewController = (segue.destinationViewController as nextViewControllerClass)
        nextViewController.receivingValueVariable = selectedRow
    }
}

不要忘记分配一个变量来接收你传递的值。

它可能会像这样,在你的下一个视图控制器的类中

class nextViewControllerClass {

    var receivingValueVariable:Int
相关问题