如何防止UITableViewCell在节刷新时丢失其选择状态



我选择了一个UITableViewCell,但当我调用此代码时:

self.tableView.beginUpdates()
self.tableView.reloadSections(IndexSet(integer: 0), with: .none)    
self.tableView.endUpdates()

它失去了选择状态,但即使我做了这两件事:

self.tableView.beginUpdates()
self.tableView.reloadSections(IndexSet(integer: 0), with: .none)
tableView.selectRow(at: IndexPath(row: 0, section: 0), animated: false, scrollPosition: .none)    
self.tableView.endUpdates()

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// get cell
cell.setSelected(true, animated: false)

单元格会在一秒钟内失去其选择状态,这是一个小故障。我希望细胞的外观即使眨眼也不会改变。

注意:我把日志语句放在了通常的shouldHighlight和didUnSelect等方法中,但没有受到这些方法的影响。

不要将代码行括在beginUpdates()endUpdates()中。这将启动一个"动画事务",以将tableView操作动画化在一起。我假设在这种情况下,即使将.none设置为动画,tableView也会运行动画,从而以小故障结束。

最新更新