我需要将一个包含一个 View 中所选行索引的变量传递到下一个 View 。
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
}
}
我的问题是,当选择一行时,selectedRow
变量在转场发生之前不会被 tableView
方法更新,这意味着该值本质上是总是落后于应有的水平。我怎样才能延迟prepareForSegue直到变量被更新或者我怎样才能成功地将选定的行传递到下一个 View 而不延迟?
最佳答案
一种可能性:不要实现 didSelectRowAtIndexPath:
。只需将该功能移动到您的 prepareForSegue
实现中即可。毕竟,这就是响应您点击电池的第一个调用。即使在 prepareForSegue
中,您也可以询问 TableView 选择了哪一行。
另一种可能性:实现 willSelectRowAtIndexPath:
而不是 didSelectRowAtIndexPath:
。它发生得更早。
关于ios - 如何在 segue 之前更新选定的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34109152/