UITableViewCell dequeueReusableCellWithIdentifier with custom initializer
ios, iphone, objective-c, uitableview
Solution
While you follow the usual pattern for cell re-usage (as you do with register class & dequeue), I do not see an easy to implement way of doing that.
If I were you I would create an additional initialization method (not following the usual `init` pattern of obj-c) or simply setters and call that following the `dequeueReusableCellWithIdentifier` call.
StoreLineGraphCell *cell = (StoreLineGraphCell*)[self.storeTableView dequeueReusableCellWithIdentifier:@"StoreLineGraphCellIdentifier"];
[cell furtherInitWithLocked:YES andUpcoming:NO]; // ... or so
Problem
I'm using `[UITableView registerClass: forReuseIdentifier:]` and `[UITableView dequeueReusableCellWithIdentifier:]` in order to queue and dequeue UITableViewCells. For example, in viewDidLoad: `[self.storeTableView registerClass:[StoreLineGraphCell class] forCellReuseIdentifier:@"StoreLineGraphCellIdentifier"];` And in cellForRowAtIndexPath: `StoreLineGraphCell *cell = (StoreLineGraphCell*)[self.storeTableView dequeueReusableCellWithIdentifier:@"StoreLineGraphCellIdentifier"];` In doing this, the `initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier` initializer is called for the UITableViewCell. The problem is that I need to use a custom initializer in order to create the cell with necessary options. For example, the ability to do something like this: `StoreLineGraphCell *cell = [[StoreLineGraphCell alloc] initWithReuseIdentifier:@"StoreLineGraphCell" isLocked:YES isUpcoming:YES];` This doesn't seem possible with the `registerClass` & `dequeue` pattern. I'd like to keep it in an initializer as it should only be run once, not every time the cell is dequeued. Is there a proper way to accomplish this?