重新加载表视图中除第一个单元格之外的所有行的最有效方法是什么?

What's the most efficient way to reload all rows in a tableview except the first cell?

我在 tableview 中有项目,我想重新加载或更新 tableview 数据,除了表视图的第一行或第一个索引路径。

 let visibleIndex = self.tableView.visibleCells.compactMap {  
 tableView.indexPath(for: [=10=])  }
  self.tableView.reloadRows(at: visibleIndex, with: .automatic)

但是这会重新加载所有可见单元格,我该如何重新加载除第一行之外的所有可见单元格

假设第一个可见单元格是最上面的 1 您可以这样做

 self.tableView.reloadRows(at: Array(visibleIndex.dropFirst()), with: .automatic)

或者如果不是

let visibleIndex = self.tableView.visibleCells.compactMap {
    tableView.indexPath(for: [=11=])  }.filter { [=11=].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
}

无需获取可见单元格。使用 indexPathsForVisibleRows 并删除第 0 节第 0 行的索引路径。

let allButFirst = (self.tableView.indexPathsForVisibleRows ?? []).filter { [=10=].section != 0 || [=10=].row != 0 }
self.tableView.reloadRows(at: allButFirst, with: .automatic)