我使用RxSwift在我的VC和VM之间用变量创建了一些非常基本的数据绑定(我很新),现在我很困惑如何最好地传达来自VM的其他UI动作,这些动作需要传递的其他数据他们。
如触发弹出警报错误消息传递,导航控件等,因为我想与他们一起发送参数。
我想过再次使用委托。但是在同一个VM中将绑定和委托混合在一起是不合适的吗?
我想抽象一个模板,该模板可以模板到应用程序的其他MVVM区域,这些区域需要为每个VC / VM组合做同样的事情。
这很容易变成一个基于意见的问题,但是如果你想坚持RxSwift,我认为你这样做,最好的方法是创建从VC到VM的订阅。从本质上讲,您的VM将在VC中订阅Variable
,PublishSubject
或类似内容,您可以在必要时处理这些内容。
例如,使用Strings作为数据的这样的事情:
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