如何在 RXswift 和 RXCocoa 的 UITableView 的 tableview cell 里面实现?

How to implement in RXswift and RXCocoa of UITableView Inside of tableview cell?

我是 RXswift 的新手,目前在一个项目中工作,该项目需要在 UITableViewCell 中使用 UITableView 的 rxswift

下面是我到目前为止完成的一些代码,但是每次滚动 up/down,它都没有显示正确的值

    var disposeBag = DisposeBag()

    viewModel.listExperience.asObservable().bind(to: tableView.rx.items(cellIdentifier: cellExperienceTableViewCell.getCellId(), cellType: ExperienceTableViewCell.self)){
            row , data, cell in

             cell.lblTitle.text = data.title ?? ""
             cell.lblDate.text = data.startDate ?? ""
             cell.lblDetails.text = data.body ?? ""

            let filtered = self.viewModel.getDataCommentInRow(row) /* returns Variable<[Comments]> */
             cell.setCommentTableView(row: row, filtered: filtered)
             cell.tableViewOffset = self.storedOffsets[row] ?? 0
             cell.tableViewComments.reloadData()

           }.disposed(by: disposeBag)

这是我的 tableView 单元格中 tableView 的代码

  func setCommentTableView(row : Int, filtered  : Variable<[ExperienceComment]>){

    tableViewComments.tag = row
    filtered.asObservable().bind(to: tableViewComments.rx.items(cellIdentifier: commentCell.getCellId(), cellType: CommentCell.self)){  indexPath , data, cell in
        cell.lblComment.text = data.body
      }.disposed(by: disposeBag)
}

有人知道如何实现吗?谢谢

我认为您唯一需要做的就是在 table 视图单元格中添加一个 prepareForReuse 方法。在其中添加 disposeBag = DisposeBag()。确保您的 DisposeBag 是单元格内的 var 才能执行此操作。

如果我是对的,问题是当单元格被重用时,它开始从多个 filtered 可观察对象读取,因为它们都绑定到相同的 tableViewComments。