使用没有Style的reuseIdentifier自定义UITableViewCell?

时间:2012-10-04 14:32:07

标签: objective-c ios uitableview

在我的tableview中,我需要一堆(5-6种)不同的细胞。所有项目都具有相同的视觉布局,但内容明智(标签名称,图片和颜色),它们有很大不同。

所以我有一个CustomUITableViewCell基类,在Interface Builder中使用这种通用设计设计。这个CustomUITableViewCell类服务器作为一堆单元子类的基类。 我使用工厂模式从工厂类中使用类方法生成这些子类。 这些子类没有xib。他们为什么会有共同的设计。

现在的问题是,对于每个子类,我需要一个不同的重用标识符。所以,人们会认为让我们覆盖每个子类的默认初始化器,并在其中调用另一个初始化器initWithStyle:reuseIdentifier:

问题是它需要指定样式。它抱怨说我不能把nil放在那里。但我不需要Apple的任何风格,我显然有自己的风格,如果我想要一个股票风格,为什么我会做自定义设计。我只需要指定reuseIdentifier。

如果重用标识符是readonly属性,如何分配重用标识符,似乎提供它的唯一方法是通过初始化程序?

1 个答案:

答案 0 :(得分:9)

前段时间我遇到过类似的问题。我的解决方案是在reuseIdentifier子类的实现文件中重新声明UITableViewCell作为读写属性

@interface MyCustomCell ()
@property(nonatomic, readwrite, copy) NSString *reuseIdentifier;
@end

并使用不同的实例变量合成属性:

@implementation MyCustomCell
@synthesize reuseIdentifier = _myCustomCellReuseIdentifier;

现在,您可以在自定义单元格的init方法中指定self.reuseIdentifier

至少它适用于我的情况,也许你可以使用它......