Как реализовать в RXswift и RXCocoa UITableView внутри ячейки табличного вида?

Я новичок в RXswift и в настоящее время работаю в проекте, который требует rxswift с UITableView внутри UITableViewCell

Ниже приведены некоторые из кодов, которые я сделал до сих пор, но каждый раз при прокрутке вверх / вниз он не показывает правильное значение

    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 ответ

Решение

Я думаю, что единственное, что вам нужно сделать, это добавить prepareForReuse метод в ячейке табличного представления. В него добавить disposeBag = DisposeBag(), Убедитесь, что ваш DisposeBag - это переменная внутри ячейки, чтобы сделать это.

Если я прав, проблема в том, что когда ячейка используется повторно, она начинает читать с нескольких filtered наблюдаемые, потому что все они привязаны к одному и тому же tableViewComments.

Другие вопросы по тегам