扩展或不扩展时仅重新加载表格视图的一部分 - Swift

Posted

技术标签:

【中文标题】扩展或不扩展时仅重新加载表格视图的一部分 - Swift【英文标题】:Reload only section of tableview when expanding or not - Swift 【发布时间】:2020-03-28 12:11:18 【问题描述】:

我成功地用单元格折叠该部分,但最后我重新加载了所有的 tableview,我不希望这样。我想要的是仅在扩展或不扩展时重新加载该部分(插入/删除)。

这是我用来插入或删除部分行的方法:

func settingsViewTapped(view: SettingsCellView, section: Int) 
    var indexPaths = [IndexPath]()
    for row in self.settingsTrainings[section].workouts.indices 
        let indexPath = IndexPath(row: row, section: section)
        indexPaths.append(indexPath)
    

    let isExpanded = self.settingsTrainings[section].isExpanded
    self.settingsTrainings[section].isExpanded = !isExpanded

    if isExpanded 
        tableView.deleteRows(at: indexPaths, with: .none)
        tableView.reloadData()
     else 
        tableView.insertRows(at: indexPaths, with: .none)
        tableView.reloadData()
    

【问题讨论】:

与question非常相似或重复。 我实现了很多次。 indexPaths 的插入和删除不需要 reloadData 。为什么要重新加载数据? 【参考方案1】:

你应该用 beginUpdates 和 endUpdates 包装 deleteRows 和 insertRows

tableView.beginUpdates()
tableView.insertRows(at: indexPaths, with: UITableViewRowAnimation.top)
tableView.endUpdates()

【讨论】:

以上是关于扩展或不扩展时仅重新加载表格视图的一部分 - Swift的主要内容,如果未能解决你的问题,请参考以下文章

通过重新加载 10-10 新闻扩展 tableView 行中的问题

尝试重新加载部分时出现断言失败错误

使表格视图部分迅速扩展

使用表格视图标题中的扩展文本扩展标签和视图

在不重新加载整个表格视图的情况下更改 UITableView 的部分页眉/页脚标题

Excel表格打开提示“xls文件格式和扩展名不匹配,文件可能已损坏或不安全”