我已经使用RxSwift在我的VC和VM之间创建了一些非常基本的数据绑定(我非常陌生(,现在我对如何最好地传达来自VM的其他UI操作感到困惑,这些操作需要随它们一起传递其他数据。
例如触发错误消息传递的弹出警报、导航控件等,因为我想随它们一起发送参数。
我考虑过再次使用委派。 但是,在同一 VM 中混合绑定和委派是否不合适?
我想抽象出一种模式,该模式可以模板化到应用程序的其他 MVVM 区域,这些区域需要为每个 VC/VM 组合执行相同的操作。
这很容易变成一个基于意见的问题,但如果你想坚持使用 RxSwift,我假设你这样做,最好的方法是创建从 VC 到 VM 的订阅。实质上,您的 VM 将订阅 VC 中的Variable
、PublishSubject
或类似内容,您将在必要时处理这些内容。
例如,使用字符串作为数据:
let subject = PublishSubject<String>()
// As you can see the subject casts nicely, because it's an Observable subclass
let observable : Observable<String> = subject
observable
.subscribe(onNext: { text in
print(text)
})
.addDisposableTo(disposeBag)
// You can call onNext any time you want to emit a new item in the sequence
subject.onNext("Hey!")
subject.onNext("I'm back!")
您可以在此处查看更多示例:http://swiftpearls.com/RxSwift-for-dummies-3-Subjects.html