如何快速按下所选单元格的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的主要内容,如果未能解决你的问题,请参考以下文章

vba如何读取excel中某单元格的行数或列数

更改所选单元格的背景颜色?

如何在我的 DataGrid 中获取所选单元格的当前列(C# WPF 应用程序)

android日历控件怎么获得所选日期的单元格的焦点

c# wpf datagrid 模板列修改某个单元格,更新所选行另一个单元格的值,如何做到呢?

如何从选择中定位特定范围的单元格?