每个表UITableView(iPhone)有多个自定义单元格类型

时间:2011-07-07 17:06:13

标签: iphone ios uitableview

我一直在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关联的单元。然后它返回。这可以很好地在整个应用程序中重复使用,但有些事情告诉我这很糟糕。

单个表中不同单元格类型的正确方法是什么?

3 个答案:

答案 0 :(得分:4)

我发现选项#2是一个具有单独XIB的自定义单元类,是最容易维护的。

在代码中创建所有内容会运行得更快,但是当我开发时,需要花费更多的时间/精力来进入修改代码的流程。最后,易于维护比性能轻微打击更重要。

答案 1 :(得分:2)

简单地说,如果它适合你,那就去吧。所有这些想法都是可行的解决方案。

就个人而言,我会按照这个顺序去找他们:2,1,4,3。虽然这只是我个人的偏好。

PS这些想法都不会让Apple拒绝您的应用。

答案 2 :(得分:0)

我没有看到方法4的任何缺点,这是方法2的变体(对于所有单元格仅使用一个xib而不是每个单元格使用一个xib。)

我认为不需要以编程方式定义单元格,也不需要使用所有自定义单元格(可以在其他地方重用)来膨胀与主视图控制器关联的xib。

实施选项2或4并不会带来很大的不同。使用选项2,您可以逐个加载笔尖,使用选项4加载唯一的笔尖,然后管理您获得的对象数组(视图/单元格)。