到目前为止,我已经观察到MVVM设计模式的多个流程。不确定这2个中的哪一个是正确的吗?
假设我们要在表格视图中显示天气数据。
流程1 :(在此流程中,viewcontroller永远不会在其中包含数据模型对象(甚至不用于在tableview中显示),只要viewcontroller想要进行通信,它将仅通过viewmodel进行通信
流程2 :(在此流程中,viewcontroller使用/访问数据模型对象以在表视图中显示)
答案 0 :(得分:1)
在我看来,第一个流程更好,因为
ViewModel应该保留数据,而不是视图控制器。这将使您的事情变得简单。您应该声明变量,例如视图模型中的一些数据数组,而不是视图控制器。
您不必向/从视图模型/视图控制器发送数据。只需通过委托通知视图控制器某些数据已经到达。
答案 1 :(得分:-2)
这是我最喜欢的流程:
1-创建一个名为APIManager的Singelton,用于处理数据提取。
2-ViewController向APIManager请求数据。
3-将您在视图模型中获取的数据注入。
4-创建dataSourceVariable刷新tableView或collectionView
var dataSource: [ViewModel]? {
didSet {
(tableView/collectionView).reloadData()
}
}