展开唯一轻拍的单元格并折叠其他单元格

问题描述

点击表格单元格时,我正在执行展开/折叠,但是我必须关闭除点击的单元格以外的所有其他单元格。尝试过此解决方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()
}