我正在阅读关于输入输出ViewModel方法:https://medium.com/blablacar-tech/rxswift-mvvm-66827b8b3f10的博客
完整代码:https://gist.github.com/MartinMoizard
我只是不明白为什么
let greeting = validateSubject
.withLatestFrom(nameSubject)
.map { name in
return "Hello \(name)!"
}
.asDriver(onErrorJustReturn: ":-(")https://gist.github.com/MartinMoizard/4d66528a9959cbbdefa6d50394d2bfb1
如果validateSubject在https://gist.github.com/MartinMoizard/449be0d30920010210988f1773a2ca90中被窃听时是私有的,则将触发
final class ButtonCell: UITableViewCell, SayHelloViewModelBindable {
@IBOutlet weak var validateButton: UIButton!
var disposeBag: DisposeBag?
override func prepareForReuse() {
super.prepareForReuse()
disposeBag = nil
}
func bind(to viewModel: SayHelloViewModel) {
let bag = DisposeBag()
validateButton.rx
.tap
.bind(to: viewModel.input.validate)
.disposed(by: bag)
disposeBag = bag
}
}提亚
发布于 2019-11-30 22:03:01
他实际上并不是在tap上访问tap,但最终他创建了一些可访问的输入/输出层,例如:
struct Input {
let name: AnyObserver<String>
let validate: AnyObserver<Void>
}
struct Output {
let greeting: Driver<String>
}与内部私有层/逻辑(如validateSubject和nameSubject)通信。
然后,他通过name和validate传递输入中的各种信息,并期望输出的信息通过greeting返回。
https://stackoverflow.com/questions/59118403
复制相似问题