我需要将一个视图中包含所选行的索引的变量传递给下一个视图。
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
变量在segue发生之前不会由tableView
方法更新,这意味着该值本质上总是比其应有的值落后一。我如何才能将prepareForSegue延迟到更新变量之前,或者如何才能成功地将所选行无延迟地传递到下一个视图? 最佳答案
一种可能性:不要实现didSelectRowAtIndexPath:
。只需将该功能移到您的prepareForSegue
实现中即可。毕竟,这就是您轻按单元格时首先要调用的内容。即使在prepareForSegue
中,您也可以询问表视图选择了哪一行。
另一种可能性:实现willSelectRowAtIndexPath:
而不是didSelectRowAtIndexPath:
。它发生得较早。