使用委托从iOS中的ViewModel传递数据到UI的任何替代方法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用委托从iOS中的ViewModel传递数据到UI的任何替代方法?相关的知识,希望对你有一定的参考价值。

我使用RxSwift在我的VC和VM之间用变量创建了一些非常基本的数据绑定(我很新),现在我很困惑如何最好地传达来自VM的其他UI动作,这些动作需要传递的其他数据他们。

如触发弹出警报错误消息传递,导航控件等,因为我想与他们一起发送参数。

我想过再次使用委托。但是在同一个VM中将绑定和委托混合在一起是不合适的吗?

我想抽象一个模板,该模板可以模板到应用程序的其他MVVM区域,这些区域需要为每个VC / VM组合做同样的事情。

答案

这很容易变成一个基于意见的问题,但是如果你想坚持RxSwift,我认为你这样做,最好的方法是创建从VC到VM的订阅。从本质上讲,您的VM将在VC中订阅VariablePublishSubject或类似内容,您可以在必要时处理这些内容。

例如,使用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 将模型从视图模型传递到视图模型?

从 Cordova iOS 中的委托返回数据

使用委托将数据从模态视图传递到父视图(在情节提要中使用 segue)

如何从 UIViewController 传递变量来委托 UITableViewController