使用委托从iOS中的ViewModel传递数据到UI的任何替代方法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用委托从iOS中的ViewModel传递数据到UI的任何替代方法?相关的知识,希望对你有一定的参考价值。
我使用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
以上是关于使用委托从iOS中的ViewModel传递数据到UI的任何替代方法?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用委托将数据从多个视图控制器传递回根视图控制器? IOS 7
iOS:如何使用 MVVM 将模型从视图模型传递到视图模型?