RESOLVED: см. Нижнюю часть вопроса.UITableView не использует программный пользовательский UITableViewCell
Я использую пользовательский UITableViewCell для моего программно определенного UITableView. Пользовательский UITableViewCell в настоящее время имеет красный фон и ничего больше. Вот отрывок из cellForRowAtIndexPath в UIViewController в:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CCTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CELL_ID];
if (cell == nil)
{
cell = [self getNewCell];
}
…
return cell;
}
- (CCTableViewCell *) getNewCell
{
return [CCTableViewCell newCell];
}
код, связанный в CCTableViewCell:
в .h:
#define CELL_ID @"CCTVCell"
в .m:
+ (CCTableViewCell *) newCell
{
CCTableViewCell * cell = [[CCTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CELL_ID];
return cell;
}
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
[self initCell];
}
return self;
}
- (CCTableViewCell *) init
{
self = [super init];
if (self) {
[self initCell];
}
return self;
}
- (void) initCell
{
[self setBackgroundColor:[UIColor redColor]];
}
проблема заключается в том, что пользовательский UITableViewCell не используется (либо не отображается, либо не создается) в таблице. Вместо этого используется стандартная ячейка.
Я рассмотрел множество других вопросов, и все они решены с помощью шагов, которые я уже реализовал.
Примечание: Разделение частей в этом случае является тем, что это будет родительский класс для определенных UITableViewControllers с их собственными реализациями CCTableViewCell. Эта часть имеет общий код для наследования.
EDIT: код CCTableViewCell добавил
EDIT ++:
Это в моем UIViewController в viewDidLoad
- (void)viewDidLoad
{
[super viewDidLoad];
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(50, 100, 220, 300)];
tableView.delegate = self;
tableView.dataSource = self;
tableView.allowsMultipleSelection = NO;
[tableView registerClass:[CCTableViewCell class] forCellReuseIdentifier:CELL_ID];
[tableView reloadData];
[self.view addSubview:tableView];
}
EDIT ++: TableViewController действительно UIViewController с делегатом и источником данных, созданной
EDIT: RESOLVED: Итак, получается, что перезапись делегата willDisplayCell wo RKS. См. Ссылку ниже для информации.
How to customize the background color of a UITableViewCell?
По существу, cellForRowAtIndexPath, кажется, только делать вещи пост-создание таблицы. WillDisplayCell работает всякий раз, когда отображается ячейка. Я предполагаю, что проект создал пустые ячейки при создании таблицы в viewDidLoad.
Добавить код для 'CCTableViewCell' – Wain
попробуйте заменить эту строку: CCTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: CELL_ID]; by: CCTableViewCell * cell = (CCTableViewCell *) [tableView dequeueReusableCellWithIdentifier: CELL_ID]; Я не уверен, если это причина ... не потеряет ничего, если вы попробуете .. удачи – DrDev
я отредактировал свой комментарий – DrDev