如何快速按下所选单元格的IndexPath
Posted
技术标签:
【中文标题】如何快速按下所选单元格的IndexPath【英文标题】:How to get the IndexPath of a selected cell as soon as it is pressed in swift 【发布时间】:2020-02-11 02:25:46 【问题描述】:我一直在尝试获取当前选定行的 IndexPath。我一直在使用这个功能:
override func tableView(_ tableView: UITableView, didDeselectRowAt indexPathForSelection: IndexPath)
print(SavedColors.SavedColorsList[indexPathForSelection.row].Name)
问题是它给了我刚刚取消选择的单元格的 IndexPath。如果我按下第一个单元格,什么也不会发生。如果我然后按第二个单元格,它会在第一个单元格的 indexPath 中打印“0”,依此类推。我想在按下单元格后立即获取索引路径。我该怎么做?
Said another way: the function is called when the selection is switched to another cell, but not when a cell is selected.我希望用户点击,并激活该功能。相反,当您点击时,什么都不会发生,直到您点击另一个不同的单元格。我该如何解决这个问题?
我不知道这是否相关,但self.tableView.deselectSelectedRow(animated: true)
函数也没有做任何事情......
谢谢
【问题讨论】:
【参考方案1】:你需要使用 didSelect 而不是 deSelect
override func tableView(_ tableView: UITableView, didSelectRowAt indexPathForSelection: IndexPath)
print(SavedColors.SavedColorsList[indexPathForSelection.row].Name)
.
选择单元格时调用DidSelect,取消选择单元格时调用deSelect ...所以在编写这些函数时要小心,快乐编码=)
【讨论】:
【参考方案2】:抱歉,我不太明白你的问题
如果你真的只是想在点击某个单元格时获取 indexPath,你可以遵循
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
【讨论】:
我改进了这个问题。告诉我这是否有意义!谢谢。 @qwerty-dvorak 答案是正确的。您不应将“didSelectRowAt”与“didDeselectRowAt”或“deselectSelectedRow”混淆。以上是关于如何快速按下所选单元格的IndexPath的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的 DataGrid 中获取所选单元格的当前列(C# WPF 应用程序)