如何在 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
我需要将包含一个视图中所选行的索引的变量传递给下一个视图。
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