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

时间:2017-08-04 16:28:35

标签: ios swift uitableview rx-swift rx-cocoa

当我单击的单元格触发数据更改时,我的变量绑定的tableView跳转/毛刺。

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

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

}

当按下tableView中的一个按钮时,我最终更新变量的值,如下所示:

variable.value = updatedData

有谁知道为什么会发生这种情况?

任何帮助都将不胜感激。

提前致谢。

2 个答案:

答案 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() 
    }
}