如何从UITableview快速获取上次选择的行和当前选定的行?



我正在尝试从UITableview didSelectRowAt方法中获取以前选择的行和当前选择的行。

didSelectRowAt方法仅提供所选的行。

有没有办法知道在调用didSelectRowAt之前选择了哪一行?

您只需要声明两个属性来存储以前和当前选择的行,然后在tableView(_:didSelectRowAt:)中更新它们的值。

class TableViewController: UITableViewController {
var lastSelectedRow: IndexPath?
var currentlySelectedRow: IndexPath?
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
super.tableView(tableView, didSelectRowAt: indexPath)
lastSelectedRow = currentlySelectedRow
currentlySelectedRow = indexPath
}
}

UITableViewDelegate 协议有几种方法来帮助您管理表视图的状态。

不要缓存索引路径,因为它们很容易变得过时和无效。您的代码最终会遇到无效的 IndexPath,并且在使用无效对象时应用程序将崩溃。

相反,请使用通知您将选择哪一行的方法。在willSelectRowAt中,您可以通过调用 indexPathForSelectedRow 来获取表视图的当前选择状态,并对选择信息执行所需的操作。

class TableViewController: UITableViewController {
override func tableView(UITableView, willSelectRowAt: IndexPath) -> IndexPath? {
let selectedIndexPath = self.tableView.indexPathForSelectedRow()
// Do something with the selected path
}
}

相关内容

  • 没有找到相关文章

最新更新