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

时间:2018-12-06 11:11:54

标签: ios swift uitableview uikit swift4.2

我有一个被选中的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等方法上,但没有对这些家伙造成打击。

1 个答案:

答案 0 :(得分:1)

请勿在{{1​​}}和element.style.displayBox = ''中包含代码行。这将启动“动画事务”以对beginUpdates()操作进行动画处理。我假设在这种情况下,即使您将endUpdates()设置为动画,tableView也会运行动画,从而以小故障结束。