【发布时间】:2011-09-30 15:47:19
【问题描述】:
我一直在 Apple.Developer 和 Stackflow 上到处搜索,但还没有找到一个清晰、标准和正确的方法来处理这个问题。基本上我要做的是如何在表格中表示多个自定义单元格类型。此外,应用程序中还有其他表格可能会重复使用一些自定义单元格。
大多数情况下,表格会一遍又一遍地重复相同的单元格类型。但在某些情况下,我有一个包含几种复杂自定义单元格的表格。
下面列出了我学到的不同方法可以做到这一点。我已经尝试了每一个,它们都可以工作,但我不确定“正确”的方式以及 Apple 不会拒绝的方式。
1) 以编程方式 - 最终,这是性能的最佳选择。但如果有一种方法可以在 Interface Builder 中绘制复杂的自定义单元格,那将是更好的选择。这是我要避免的。
2) 具有单独 XIB 的自定义单元格类 - 每个自定义单元格都有自己的标题/实现/XIB,并且是 UITableViewCell 的子类。 XIB 中的单个单元格将其文件所有者设置为特定的 UITableViewController 类。此处的视图也已被删除。
3) 与视图控制器的 XIB 位于同一 XIB 中的自定义单元 - 我读到这很糟糕。控制器应该只与层次结构中的单个视图相关联。我在 XIB 中包含了一个与视图相同级别的自定义单元,然后将其链接到控制器的 IBOutlet。
4) 一个单独的通用 XIB - 这本质上是一个定制单元的垃圾场。这里的视图也已被删除。 XIB 包含多个单元格,每个单元格都与 UITableViewCell 的特定子类相关联。头文件和实现文件包含从 UITableViewCell 子类化的每个单元格的定义和实现。在显示表格的控制器中,方法 cellForRowAtIndexPath 循环遍历此公共 XIB 的 NSBundle,并找到与 UITableViewCell 的特定子类类型关联的单元格。然后它返回。这可以很好地在整个应用程序中重复使用,但有些东西告诉我它很糟糕。
对于单个表格中的不同单元格类型,正确的方法是什么?
【问题讨论】:
-
如果您想重用具有多个视图控制器的自定义表格单元格,请查看this answer。此处描述的两种方法使您可以从 nib 文件加载表格单元格,而无需将 File's Owner 设置为特定的控制器。
-
谢谢大家!所有 cmets 都很有帮助。在我的项目中,我倾向于以编程方式开发所有单元格,除非它们真的很复杂。
标签: iphone ios uitableview