扩展或不扩展时仅重新加载表格视图的一部分 - 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 行中的问题