【发布时间】:2016-10-28 06:22:27
【问题描述】:
我坚持为表格视图的单元格创建视图模型的设计决策。每个单元格的数据由数据源类提供(有一个Contacts 数组)。在MVVM 只有视图模型可以与模型对话,但是将数据源放在视图模型中是没有意义的,因为它可以访问所有单元格的数据,而且将数据源放在视图控制器中也是错误的因为它不能引用数据。还有其他一些关键时刻:
- 每个单元格都必须有自己的视图模型实例,而不是共享的实例
-
cellForRowAtindexPath不能放在视图模型中,因为 它不应包含任何 UI 引用 - View/ViewController 的视图模型不应与单元格的视图模型交互
在MVVM 的关系中为单元格“插入”数据源的正确方法是什么?谢谢。
【问题讨论】:
-
除非您使用额外的框架,例如 React,否则 MVVM 在 iOS 中并不能真正工作,因为 iOS 控件没有数据绑定。
-
@Paulw11 我使用的是委托模式而不是 React,它的代码更多,但更清晰,调试也不痛苦
-
模型必须归某物所有...所以,是的,对于 iOS 来说,这可能很棘手。但是当提供一个视图模型对象时,从它们模型中提供最多的计算后/获取后的值,并在初始化视图模型 obj 后尝试不在视图模型中引用模型。您应该在初始化时将模型中所需的值/引用注入视图模型(即依赖注入)。 @Jorge Ortiz 有一个很好的答案。
标签: ios swift uitableview design-patterns mvvm