当我单击的单元格触发数据更改时,我的变量绑定的tableView跳转/毛刺。
以下是tableView和变量的绑定方式:
variable.asObservable()
.bind(to: tableView.rx.items)
{ (tableView, row, dataForRow) in
}
当按下tableView中的一个按钮时,我最终更新变量的值,如下所示:
variable.value = updatedData
有谁知道为什么会发生这种情况?
任何帮助都将不胜感激。
提前致谢。
答案 0 :(得分:1)
每次观察到的数组发生变化时,标准UITableView绑定器都会调用reloadData
。 reloadData调用不会设置动画,也会将表视图重置为顶部。这很可能就是你所看到的。您可以选择创建自己的UITableViewDataSource对象,该对象仅重新加载实际更改的单元格,或者使用为您执行此操作的RxDataSources cocoapod库。
答案 1 :(得分:0)
要解决此问题,您必须在调用prepareForReuse()时将DisposeBag的新实例分配给单元格的disposeBag变量:
class CustomCell: UITableViewCell{
var disposeBag = DisposeBag()
override func prepareForReuse() {
super.prepareForReuse()
disposeBag = DisposeBag()
}
}