Swift MVVM,ViewController 没有 ViewModel 引用?

Swift MVVM, a ViewController without a ViewModel reference?

我一直想知道是否有可能在 ViewController 中有一个不引用 ViewModel 的 MVVM 架构,我知道它需要这个引用,因为 ViewModel 用作 DataContext 但我是试图弄清楚,我想尽可能多地隔离 Views 和 ViewModel 之间的责任和依赖注入。您是否知道如何在 Swift 的 MVVM 模式中实现这一目标?

让我们一步步看看你在MVVM方面的想法

"No reference of ViewModel in the ViewController or View."

这不是个好主意。通过在您的视图中引用视图模型,您可以通知视图模型。这并不意味着您需要在您的视图或 viewcontroller.

中执行逻辑

"I want to isolate as much as possible responsibilities and dependency injection between Views and ViewModel."

没错! ViewModel 处理所有逻辑。 View 需要是轻量级的,没有逻辑。在将您的视图绑定到视图模型和分离关注点方面有很多方法。我可以举个例子。


将您的数据源从视图移动到视图模型。例如,如果您使用 tableviewdatasource,则为您的 tableViewDataSource 创建一个通用数据源(您可以通过 google 找到许多示例)。您的 viewcontroller 将如下所示:

private var dataSource : YourTableViewDataSource<YourData>!
private var yourViewModel: YourViewModel!

self.yourTableViewDataSource = dataSource
func updateDataSource() { }