cell.backgroundColor не отвечает, если установлено в tableView: cellForRowAtIndexPath - PullRequest
6 голосов
/ 12 января 2012

Я пытаюсь закрасить определенную строку таблицы красным, поэтому я попытался добавить

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
... init Code here
cell.backgroundColor = [UIColor redColor];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}

. Отображается вспомогательный флажок, но не красный цвет.

Позже я обнаружил, что, поместив его вtableView: willDisplay, все работает.Это по замыслу?почему игнорируется значение, которое я уже установил в момент инициализации ячейки?

Ответы [ 2 ]

3 голосов
/ 12 января 2012

Внешний вид ячейки настраивается в tableView:willDisplayCell.Итак, чтобы ответить на ваш вопрос, да, это по замыслу.Дополнительные представления и подпредставления contentView ячейки необходимо изменить / назначить в cellForRowAtIndexPath.

Из документации tableView:willDisplayCell:forRowAtIndexPath::

Представление таблицы отправляет это сообщениеего делегат непосредственно перед тем, как он использует ячейку для рисования строки, тем самым позволяет делегату настраивать объект ячейки перед его отображением.Этот метод дает делегату возможность переопределить основанные на состоянии свойства, установленные ранее табличным представлением, такие как выделение и цвет фона.После возврата делегата табличное представление устанавливает только свойства альфа-канала и фрейма, а затем только при анимации строк по мере их скольжения внутрь или наружу.

1 голос
/ 30 мая 2013

К вашему сведению, ответ Рави верный, но если вы хотите упростить вашу реализацию, вы также можете установить цвет фона contentView ячейки для достижения того же эффекта.

cell.contentView.backgroundColor = [UIColor redColor];

Это не документированное решение, но будет работать следующее:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
... init Code here
    cell.contentView.backgroundColor = [UIColor redColor];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...