在它绑定到的变量中发生数据更改后,用 RxSwift/RxCocoa 制作的 TableView 出现故障

TableView made with RxSwift/RxCocoa glitches after a data change in the Variable it's bound to

当我点击触发数据更改的单元格时,我的变量绑定到的 tableView jumps/glitches。

以下是 tableView 和变量的绑定方式:

variable.asObservable()
        .bind(to: tableView.rx.items)
            { (tableView, row, dataForRow) in

}

当按下 tableView 中的一个按钮时,我最终会像这样更新变量的值:

variable.value = updatedData

有人知道为什么会这样吗?

如有任何帮助,我们将不胜感激。

提前致谢。

每次观察到的数组发生变化时,标准 UITableView 绑定程序都会调用 reloadData。 reloadData 调用不会设置动画,还会将 table 视图重置到顶部。这可能就是您所看到的。您的选择是制作您自己的 UITableViewDataSource 对象,该对象仅重新加载实际更改的单元格,或者使用 RxDataSources cocoapod 库为您执行此操作。

要解决此问题,您必须在调用 prepareForReuse() 时将 DisposeBag 的新实例分配给单元格的 disposeBag 变量:

class CustomCell: UITableViewCell{

var disposeBag = DisposeBag() 


override func prepareForReuse() {
        super.prepareForReuse()

        disposeBag = DisposeBag() 
    }
}