ios - 对于 MVVM 设计模式, TableView 单元格高度属于哪里?

标签 ios swift design-patterns mvvm model-view

我有一个 View 模型,其中包含我的模型和我的 View Controller 中的 TableView 委托(delegate)方法使用的其他属性。对于 heightForRowAt 委托(delegate)方法,我从我的 View 模型中传递一个计算属性来动态计算行的高度。我的问题是行高属性是否属于我的 View 模型?如果它只是一个常量而不是计算属性怎么办?如果不是,为什么?我应该把它放在另一个结构中吗?

最佳答案

你可以把它放进去。 MVVM 有不同的变体。

  1. 放在 View 层: 如果你更喜欢 View 模型而不是对 View 有任何了解,那么你可以将高度计算放在你的 View 模型中,因为它是纯粹的渲染逻辑。在这种情况下, View 模型与 View 很好地解耦,您可以使用不同的 View 来呈现相同的 View 模型。 View 模型中的属性应该与 View 无关,例如,您的 View 中有一个名称标签, View 模型属性应该称为 name 而不是 nameLabelText。这种实现有两个缺点。首先,如果你想缓存计算出的高度,那么你必须在你的 View 层中实现缓存。第二个是在渲染之前计算单元格高度并不容易。

  2. 将其放入 View 模型中: 在实践中,我发现让你的 View 模型对 View 有一些了解是可以接受的,因为在大多数情况下,一个 View 模型只被一个 View 使用。在这种情况下,您可以根据需要调用 View 模型属性 nameLabelText,也可以使用 cellHeight。缓存单元格高度和异步进行高度计算也将更加容易。

关于ios - 对于 MVVM 设计模式, TableView 单元格高度属于哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51711286/

相关文章:

c# - 在循环中调用具有相同输出和不同输入的多个方法

Java util 模式实例

ios - 更新滚动实时 CorePlot 散点图上的 X 轴

ios - Quamotion - 搜索包含一个字符串但不包含另一个字符串的元素

ios - 如何检查 NSDictionary 在 Swift 2 中是否为 nil

ios - 拍摄 UIImageView 的屏幕截图我只需要图像 IOS

java - 像这样使用装饰器模式是不是错了?

ios - 如何将数据从 selectedrow 发送到下一个 viewcontroller?

ios - Swift:自动向下滚动到 UIWebView 上的一个点

json - 使用值有时是 Int 有时是 String 的 codable