Запись проекта на MVVM и попытка связать все с помощью RxSwift .К сожалению, мне не удалось найти правильный способ связывания действий.
Например, у меня есть таблица и простые ячейки с одной кнопкой - «Выбрать».
Для этих целейУ меня будет две модели представлений: ListViewModel
& CellViewModel
ListViewModel
будут создавать массив CellViewModel
и должны будут подписаться на событие выбора (пользовательское событие).
Сейчас я использую BehaviorSubject для этой цели, но выглядит уродливо.Кто может подсказать мне, как это должно быть реализовано с RxSwift ?
class CellViewModel {
private let selectionSubject = BehaviorSubject<Void>(value: ())
// Will be used by ListViewModel
var selectionObservable: Observable<Void> {
return selectionSubject.asObservable()
}
func subscribeOnSelection(_ observable: Observable<Void>, disposeBag: DisposeBag) {
observable
.bind(to: selectionSubject)
.disposed(by: disposeBag)
}
private func autoSelect() {
selectionSubject.on(next: ())
}
}
class Cell: UITableViewCell {
@IBOutlet private var selectionButton: UIButton!
private let disposeBag = DisposeBag()
func bind(to viewModel: CellViewModel) {
viewModel.subscribeOnSelection(selectionButton.rx.tap.asObservable(), disposeBag: disposeBag)
}
}