swift - 当且仅当 tableview 只有一行时,为什么 UITableViewCell 不调用 didSelectRowAt
问题描述
我有一个UITableView
由UITableViewController
. 当我选择一行时,我希望该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 单元格是可选择的并且可见地显示选择,该方法也不会被调用。我内置了一个按钮来检查示例数组的状态,一切正常。
解决方案
所以这是一个代码完成出错的例子。我花了几个小时追逐它,甚至重写了几次方法,但答案是:
didDeselectRowAt
代替:
didSelectRowAt
因为它在切换单元后工作,很难检查。