首页 > 解决方案 > 当且仅当 tableview 只有一行时,为什么 UITableViewCell 不调用 didSelectRowAt

问题描述

我有一个UITableViewUITableViewController. 当我选择一行时,我希望该didSelectRowAt方法调用一个函数来[String]dataSource. 它工作得很好,除非datasource数组只有一项。例如,如果数组看起来像:

var example: [String] = ["What", "Is", "The", "Problem"]

我没有问题。我可以选择任何一个index并调用该方法,下面的代码将为我选择的每个索引打印index和,包括 0。string

override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
      print(indexPath.row, example[indexPath.row])
}

但是,如果数组如下所示:

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

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

标签: swiftuitableviewswift5didselectrowatindexpath

解决方案


所以这是一个代码完成出错的例子。我花了几个小时追逐它,甚至重写了几次方法,但答案是:

didDeselectRowAt

代替:

didSelectRowAt

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


推荐阅读