如何构建复杂的 table 元素

How to structure complicated table elements

通常 tables 易于管理,特别是因为自动布局可以完成大部分繁重的工作以确定单元格大小等。但是,在某些情况下,事情会变得有点棘手,例如 table 的民意调查。

本例中的投票由具有可变描述长度的标签、具有不同大小的图像和一组供用户选择的选项(本质上是嵌套的 table)组成。

----方法一-----

将每个投票分成多个单元格

优点: 将来很容易向民意调查添加更多字段,布局更容易处理每个元素的单个单元格,尤其是在嵌套 table 的情况下。如果您需要回退到手动计算特定单元格的大小,您可以在保持其他一切自动进行的同时进行。

缺点: 如果您有多个民意调查,您需要跟踪哪个单元格对应于哪个民意调查,并且您通常需要做一些算术来跟踪什么是什么。

----方法二-----

让包含所有这些元素的投票成为一个大单元格,并适当地设置它们之间的约束。

优点: 它易于实施,以一对一的方式将您的模型映射到您的单元格,而无需对数据进行多路分解。

缺点: 嵌套的 tables 会使自动布局变得毛茸茸。例如,在这种情况下,对于单元格的高度,我曾经使用 return UITableViewAutomaticDimension,直到我意识到这不会削减它,因为存在可以是任何大小的嵌套 table。计算嵌套 table 的内容大小非常简单,但是,这意味着您必须计算所有其他元素以及现在您 return 特定高度而不是自动计算.你的工作变得那么难了。

----结尾----

您如何处理此类问题?方法 1、2 还是完全不同的方法?我在这里简化了元素的结构以使内容更具可读性,其中涉及更多神秘的东西,例如包含您看到的元素的阴影视图,以创建浮动卡片的幻觉等。

谢谢大家

P.S :如果某个地方已经有关于此的答案,请指出我的答案,我只是还没有找到太多。希望这个 post 可以引发一些关于此事的讨论,并帮助其他人。

Paulw11 建议的一个直接替代方法是使用部分和方法 1。尽管这可能不包括表中表中表的情况,但它足以满足我想象的大多数情况下具有可观 UI.

的情况。