【发布时间】:2019-09-19 01:48:39
【问题描述】:
在 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)
}
}
【问题讨论】:
标签: swift mvvm observable rx-swift