Как реализовать в 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.