Подтвердить что ты не робот

TextLabel.backgroundColor на UITableViewCell не работает

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

Я пробовал это:

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

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

Спасибо!

4b9b3361

Ответ 1

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

В соответствии с ссылкой на класс UITableViewCell:

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

Сделайте так:

- (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 и загрузить его из nib в cellForRowAtIndexPath. См. Раздел "Загрузка пользовательских таблиц - просмотр ячеек из файлов Nib" на странице на этой странице в руководстве по программированию таблиц.

Ответ 2

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

cell.contentView.backgroundColor = [UIColor redColor];