如何防止 UITableViewCell 在部分刷新时丢失其选择状态?
Posted
技术标签:
【中文标题】如何防止 UITableViewCell 在部分刷新时丢失其选择状态?【英文标题】:How to prevent a UITableViewCell from losing its selection state on section refresh? 【发布时间】:2018-12-06 11:11:54 【问题描述】:我有一个 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
进行多次操作时才需要这些操作,这些操作应该一起动画..
我已经添加了答案..
【参考方案1】:
不要将代码行包含在beginUpdates()
和endUpdates()
中。这将启动“动画事务”以将tableView
操作一起动画化。我假设在这种情况下 tableView
会运行动画,即使您将 .none
设置为动画,也会以故障结束。
【讨论】:
以上是关于如何防止 UITableViewCell 在部分刷新时丢失其选择状态?的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 UITableViewCell 内的手势干扰 UITableView 的滚动?