自定义initWithStyle:方法

时间:2016-02-22 21:11:46

标签: ios objective-c uitableview initialization

我已将UITableViewCell分包并将其注册到我的UITableView,如下所示:

[self.tableView registerClass:[MyTableViewCell class] forCellReuseIdentifier:@"cell"];

但是我为这些单元格创建了自己的样式,如下所示:

typedef enum : NSInteger {
MyTableViewCellStyleSent,
MyTableViewCellStyleReceived
} MyTableViewCellStyle;

然后使用如下:

-(MyTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    MyTableViewCell *cell = (MyTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"cell"];
}

我希望initWithStyle:方法使用枚举,而不是“默认”UITableViewCellStyle

来自Apple Docs

  

如果您为指定的标识符注册了一个类并且必须创建一个新的单元格,则此方法通过调用其initWithStyle:reuseIdentifier:方法来初始化该单元格。对于基于nib的单元格,此方法从提供的nib文件加载单元格对象。如果现有单元可用于重用,则此方法将调用单元的prepareForReuse方法。

但我无法弄清楚如何使用我的新枚举来调用initWithStyle

采用这种方法的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

您通常不会创建自己的样式,如果以这种方式将可重复使用的单元格出列,则不会调用initWithStyle:

您应该使用不同的名称将自己的“样式”属性添加到MyTableViewCell,然后在将单元格出列后设置该属性。

如果单元格的设计不同,另一种方法是使用不同的单元类。如果共享大量代码,它们可以有一个共同的基类。