我在tableview
中有项目,并且我想重新加载或更新tableview
数据,但表视图的第一行或第一索引路径除外。
let visibleIndex = self.tableView.visibleCells.compactMap {
tableView.indexPath(for: $0) }
self.tableView.reloadRows(at: visibleIndex, with: .automatic)
但是这会重新加载所有可见单元格,我如何重新加载除第一行以外的所有可见单元格
答案 0 :(得分:2)
假设第一个可见的单元格是最顶部的单元格
self.tableView.reloadRows(at: Array(visibleIndex.dropFirst()), with: .automatic)
如果不是
let visibleIndex = self.tableView.visibleCells.compactMap {
tableView.indexPath(for: $0) }.filter { $0.row != 0 }
self.tableView.reloadRows(at: visibleIndex, with: .automatic)
==
let visibleIndex:[IndexPath] = self.tableView.visibleCells.compactMap { item in
let index = self.tableView.indexPath(for:item)!
return index.row != 0 ? index : nil
}
答案 1 :(得分:2)
无需获取可见的单元格。使用indexPathsForVisibleRows
并删除第0节第0行的索引路径。
let allButFirst = (self.tableView.indexPathsForVisibleRows ?? []).filter { $0.section != 0 || $0.row != 0 }
self.tableView.reloadRows(at: allButFirst, with: .automatic)