如何在tableview单元格的UITableView的RXswift和RXCocoa中实现?

时间:2018-08-21 14:13:18

标签: rx-swift rx-cocoa

我是RXswift的新手,目前在一个需要rxswift和UITableViewCell内具有UITableView的项目中工作

下面是我到目前为止完成的一些代码,但是每次向上/向下滚动时,它都不会显示正确的值

    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)
}

有人知道如何实现这一目标吗?谢谢

1 个答案:

答案 0 :(得分:1)

我认为您唯一要做的就是在表格视图单元格中添加一个from multiprocessing import Pipe class MainWindow(QWidget): def __init__(...): ... self.from_loopback,self.to_loopback=Pipe(False) def get_html(self): current_page = self.web_view.page() current_page.toHtml(self.to_loopback.send) return self.from_loopback.recv() 方法。在其中添加prepareForReuse。为此,请确保您的DisposeBag是单元格中的var。

如果我是对的话,问题在于当单元被重用时,它开始从多个disposeBag = DisposeBag()可观察对象中读取,因为它们都绑定到同一tableViewComments。