Мне удалось добиться того, чего вы хотите, но для меня это выглядит как обходной путь (возможно, в библиотеках есть ошибка).
Во-первых, вам нужно установить для свойства backgroundColor черный цвет в UITableView.
Затем, когда вы создаете новую UITableViewCell, вам нужно сделать что-то вроде этого (этот код поступает в источник данных UITableView):
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"MyIdentifier";
// Try to retrieve from the table view a now-unused cell with the given identifier
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
// If no cell is available, create a new one using the given identifier
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
}
cell.contentView.backgroundColor = [UIColor whiteColor];
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 60, 20)] autorelease];
label.text = @"test";
label.textColor = [UIColor blackColor];
[cell.contentView addSubview:label];
cell.textColor = [UIColor blackColor];
return cell;
}
Вы должны установить белый цвет фона contentView, но когда вы это сделаете, текст ячейки перестанет появляться, поэтому вам нужно добавить UILabel в представление содержимого и написать текст самостоятельно.
Кажется излишним просто менять цвет фона, но, возможно, есть ошибка, которая не позволяет установить другой цвет фона на UITableViewCell, чем на содержащем его UITableView.