Спасибо за сообщество RxSwift, мне удалось найти такие же варианты использования.Как объяснено здесь от kzaher, disposeBags, используемые ячейкой, должны быть освобождены в методе prepareForReuse ячейки.
Но я использовал другой подход, который не требует disposeBag в ячейке.Я добавил все tapEvents в один массив в ячейке и объединил его в одну наблюдаемую, а затем в tableView сделал то же самое, конечно же, объединив все наблюдаемые ячейки в одну, прежде чем объединить, я отобразил tapObservables в модель, которая содержит информацию обо всей машине.подробности.Это стало похоже на цепочку ответственности [ 2 ]
![Merge and map explanation](https://i.stack.imgur.com/fGdsV.png)
Вот код для более подробной информации.
В ВК всеподписки сделаны.
dataSource = RxTableViewSectionedReloadDataSource<MarketsSectionData>(configureCell: { (dataSource, tableView, indexPath, _) in
guard let cell = tableView.dequeueReusableCell(withIdentifier: cellReuseId, for: indexPath) as? AllCarsCell else {
return UITableViewCell()
}
let market = dataSource.sectionModels[indexPath.section].items[indexPath.row]
cell.setUpWith(market: market)
let sel = cell.selectionsForMarket?.map({ car -> SelectedCar in
var tCar = car
tCar.brand = self.viewModel.brand
return tCar
})
self.selectionCells.onNext(sel!)
cell.findSelectedCellAndFill(withId: self.viewModel.currentCar?.id)
self.viewModel.selection.subscribe(onNext: { car in
cell.findSelectedCellAndFill(withId: car.option?.id)
}, onDisposed: {
print("deque is disposed")
}).disposed(by: self.disposeBag)
return cell
})
self.selectionCells.merge().bind(to: self.viewModel.selection).disposed(by: self.disposeBag)
В ячейке я соединяю все виды в одну наблюдаемую, похожую на такую же
self.selectionsForMarket = Observable.from(tapActions).merge()
И представление без состояния имеет только tapGesture.