获取部分中的所有indexPath

在对tableview数据进行某种排序后,我需要重新加载不包括标题的部分。 这就是说我只想重新加载该部分中的所有行。 但是在我搜索一段时间之后,我找不到一个简单的方法来制作它。

reloadSections(sectionIndex, with: .none)在这里reloadSections(sectionIndex, with: .none) ,因为它将重新加载整个部分,包括页眉,页脚和所有行。

所以我需要使用reloadRows(at: [IndexPath], with: UITableViewRowAnimation) 。 但是如何获取该部分中所有行的整个indexPaths。

在我看来,你不需要在该部分重新加载整个单元格。 简单地说,重新加载可见的单元格以及需要重新加载的内部区域。 重新加载不可见单元格是没用的,因为在调用tableView(_:cellForRowAt:)时它们将被修复。

试试我的下面的代码

 var indexPathsNeedToReload = [IndexPath]() for cell in tableView.visibleCells { let indexPath: IndexPath = tableView.indexPath(for: cell)! if indexPath.section == SECTION_INDEX_NEED_TO_RELOAD { indexPathsNeedToReload.append(indexPath) } } tableView.reloadRows(at: indexPathsNeedToReload, with: .none) 

您可以在给定的部分中使用以下函数获取IndexPath数组。

 func getAllIndexPathsInSection(section : Int) -> [IndexPath] { let count = tblList.numberOfRows(inSection: section); return (0.. 

要么

 func getAllIndexPathsInSection(section : Int) -> [IndexPath] { return tblList.visibleCells.map({tblList.indexPath(for: $0)}).filter({($0?.section)! == section}) as! [IndexPath] } 

您可以像这样重新加载indexPaths …

 let indexPaths = tableView.visibleCells .compactMap { tableView.indexPath(for: $0) } .filter { $0.section == SECTION } 

没有必要重新加载不可见的单元格,因为它们将cellForRow(at indexPath:)调用cellForRow(at indexPath:)时更新

使用UITableView的numberOfRows inSection方法迭代节中的索引路径。 然后,您可以构建IndexPath数组:

 var reloadPaths = [IndexPath]() (0..