问题描述
点击表格单元格时,我正在执行展开/折叠,但是我必须关闭除点击的单元格以外的所有其他单元格。尝试过此解决方案Expand only the cell that has been tapped此解决方案不适用于我。
下面为扩展/折叠而编写的代码
func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
return datasource.count
}
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView .dequeueReusableCell(withIdentifier: String(describing: ExpandingTableViewCell.self),for: indexPath) as! ExpandingTableViewCell
cell.set(content: datasource[indexPath.row])
return cell
}
func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
let content = datasource[indexPath.row]
content.expanded = !content.expanded
tableView.reloadRows(at: [indexPath],with: .automatic)
}
解决方法
您需要折叠所有单元格并更改当前单击的一种状态,然后重新加载所有表
func tableView(_ tableView: UITableView,didSelectRowAt indexPath: IndexPath) {
let current = datasource[indexPath.row].expanded
datasource.forEach { $0.expanded = false }
let content = datasource[indexPath.row]
content.expanded = !current
tableView.reloadData()
}