2010-04-09 3 views
12

Я пытаюсь установить метку backgroundColor моего UITableViewCells, и он абсолютно ничего не делает. Интересно, есть ли другой способ сделать это, поэтому я спрашиваю!textLabel.backgroundColor on UITableViewCell не работает

Я попытался это:

cell.textLabel.backgroundColor = [UIColor redColor]; 
cell.backgroundColor = [UIColor redColor]; 

И это не работает, что-нибудь еще?

Спасибо!

ответ

41

Я предполагаю, что вы пытаетесь это сделать в cellForRowAtIndexPath.

Согласно UITableViewCell class reference:

Примечание: Если вы хотите изменить цвет фона ячейки (установив цвет фона ячейки через свойство BackgroundColor объявленном UIView) вас должен сделать это в таблице tableView: willDisplayCell: forRowAtIndexPath: метод делегата, а не в tableView: cellForRowAtIndexPath: from источник данных.

Так что это:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    cell.backgroundColor = [UIColor redColor]; //must do here in willDisplayCell 
    cell.textLabel.backgroundColor = [UIColor redColor]; //must do here in willDisplayCell 
    cell.textLabel.textColor = [UIColor yellowColor]; //can do here OR in cellForRowAtIndexPath 
} 

Если вам нужно больше контроля над дисплеем клеток, легкий способ заключается в разработке его в IB и загрузить его из пера в cellForRowAtIndexPath. См. Раздел «Загрузка пользовательских таблиц - просмотр ячеек из файлов Nib» в разделе this page в Руководстве по программированию таблиц.

+1

Удивительный, везде искал это. благодаря –

0

Обновление для IOS 9.3. Это действительно отлично работает в cellForRowAtIndexPath с использованием IOS 9.3. Также Примечание. Чтобы изменить цвет всего использования ячейки:

cell.contentView.backgroundColor = [UIColor redColor];

Смежные вопросы