带有自定义初始化程序的UITableViewCell dequeueReusableCellWithIdentifier

Who*_*hoa 7 iphone objective-c uitableview ios

我正在使用[UITableView registerClass: forReuseIdentifier:][UITableView dequeueReusableCellWithIdentifier:]为了将UITableViewCells排队和出队。

例如,在viewDidLoad中:

[self.storeTableView registerClass:[StoreLineGraphCell class] forCellReuseIdentifier:@"StoreLineGraphCellIdentifier"];

在cellForRowAtIndexPath中:

StoreLineGraphCell *cell = (StoreLineGraphCell*)[self.storeTableView dequeueReusableCellWithIdentifier:@"StoreLineGraphCellIdentifier"];

为此,initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier将为UITableViewCell调用初始化程序。问题是我需要使用自定义初始化程序才能创建具有必要选项的单元格。例如,可以执行以下操作:

StoreLineGraphCell *cell = [[StoreLineGraphCell alloc] initWithReuseIdentifier:@"StoreLineGraphCell" isLocked:YES isUpcoming:YES];

registerClassdequeue模式似乎无法实现。我想将其保留在初始化程序中,因为它只能运行一次,而不是每次单元出队时都运行一次。是否有适当的方法来实现这一目标?

Her*_*ker 4

虽然您遵循单元重用的通常模式(就像您对寄存器类和出列所做的那样),但我没有看到一种易于实现的方法。

如果我是你,我会创建一个额外的初始化方法(不遵循 obj-c 的通常init模式)或简单地设置器并在调用后调用它dequeueReusableCellWithIdentifier

StoreLineGraphCell *cell = (StoreLineGraphCell*)[self.storeTableView dequeueReusableCellWithIdentifier:@"StoreLineGraphCellIdentifier"];
[cell furtherInitWithLocked:YES andUpcoming:NO]; // ... or so
Run Code Online (Sandbox Code Playgroud)