如何在 segue 之前更新选定的行?

How to update selected row before segue?

我需要将包含一个视图中所选行的索引的变量传递给下一个视图。

firstview.swift

var selectedRow = 0;

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        selectedRow = indexPath.row + 1
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if (segue.identifier == "viewAssignmentsSegue") {
            let navController = segue.destinationViewController as! UINavigationController
            let controller = navController.viewControllers[0] as! AssignmentsViewController
            print(selectedRow)
            controller.activeCourse = selectedRow
        }
    }

My issue is that, when a row is selected, the selectedRow variable isn't updated by the tableView method before the segue occurs, meaning that the value is essentially always one behind what它应该是。我怎样才能延迟 prepareForSegue 直到变量被更新,或者我怎样才能成功地将选定的行传递到下一个视图而不会延迟?

一种可能性:不实施 didSelectRowAtIndexPath:。只需将该功能移动到您的 prepareForSegue 实施中即可。毕竟,这就是响应您点击电池的第一个调用。即使在 prepareForSegue 中,您也可以询问 table 视图选择了哪一行。

另一种可能性:实施 willSelectRowAtIndexPath: 而不是 didSelectRowAtIndexPath:。它发生得更早。

在您的 prepareForSegue 中:

 controller.activeCourse = self.tableView.indexPathForSelectedRow

不要等待 didSelect 被调用 - 更早做出反应。

在 prepareForSegue 上使用这个:

        let path = self.tableView.indexPathForSelectedRow()!
        controller.activeCourse = path.row

        let path = self.tableView.indexPathForCell(sender)
        controller.activeCourse = path.row