Swift 如果且仅当tableview只有一行时,为什么UITableViewCell不调用DidSelectRow

Swift 如果且仅当tableview只有一行时,为什么UITableViewCell不调用DidSelectRow,swift,uitableview,swift5,didselectrowatindexpath,Swift,Uitableview,Swift5,Didselectrowatindexpath,我有一个由UITableView控制器控制的UITableView。当我选择一行时,我希望didSelectRowAt方法调用一个函数来对[String]对象执行某些操作,该对象是数据源。它可以完美地工作,除非数据源数组只有一个项。例如,如果阵列看起来像: var example: [String] = ["What", "Is", "The", "Problem"] 我没有问题。我可以选择任何索引并调用该方法,下

我有一个由
UITableView控制器控制的
UITableView
。当我选择一行时,我希望
didSelectRowAt
方法调用一个函数来对
[String]
对象执行某些操作,该对象是
数据源。它可以完美地工作,除非
数据源
数组只有一个项。例如,如果阵列看起来像:

var example: [String] = ["What", "Is", "The", "Problem"]
我没有问题。我可以选择任何
索引
并调用该方法,下面的代码将为我选择的每个索引(包括0)打印
索引
字符串

override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
      print(indexPath.row, example[indexPath.row])
}
但是,如果阵列的外观如下所示:

var example: [String] = ["What"]

即使tableview单元格是可选择的,并且可以明显地显示所选内容,也根本不会调用
didSelectRowAt
方法。我内置了一个按钮来检查示例数组的状态,一切都正常。

因此这是一个代码完成出错的示例。我花了几个小时来研究它,甚至重写了一些方法,但答案是:

didDeselectRowAt
而不是:

didSelectRowAt

因为它在切换单元格后工作,所以很难检查。

很多人在第一次执行tableview/collectionview时都犯了这个错误