Почему не работает цвет фона UITableViewCell (устанавливается в конструкторе интерфейсов)? - PullRequest
56 голосов
/ 02 марта 2011

Почему не работает цвет фона UITableViewCell (устанавливается в конструкторе интерфейсов)?

Я отмечаю из некоторых поисков, что следующий код, установленный в вашем пользовательском подклассе UITableViewController, работает (см. Ниже):

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.backgroundColor = [UIColor redColor];
}

Но я все же хотел бы просто понять, почему у конструктора интерфейса есть настройка цвета фона для TableViewCell, которая, по-видимому, фактически не работает?

Ответы [ 14 ]

70 голосов
/ 16 декабря 2012

Уже немного поздно, но я только что столкнулся с этой проблемой ... Настройка цвета фона на contentView работает нормально:

cell.contentView.backgroundColor = [UIColor redColor];
16 голосов
/ 28 марта 2012

Что мне сработало, так это создание моего собственного объекта UIView, который должен быть задан в качестве фонового представления UITableViewCell.В ячейке ForRowAtIndexPath:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
UIView* bgview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
bgview.opaque = YES;
bgview.backgroundColor = [UIColor orangeColor];
[cell setBackgroundView:bgview];
11 голосов
/ 02 марта 2011

Попытка установить цвет фона самой UITableViewCell не так, как вы должны это делать.Ячейка таблицы имеет набор из пяти полезных представлений, к которым вы можете получить доступ, одно из которых backgroundView.

Рекомендуемое чтение:

http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html

, а затем:

http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html

7 голосов
/ 05 февраля 2013

Вы должны всегда предоставлять изменения для ячеек в tableView:willDisplayCell:forRowAtIndexPath: вместо метода tableView:cellForRowAtIndexPath:, как указано в документации Apple.

Это работает !!

3 голосов
/ 13 декабря 2012
[cell.textLabel setBackgroundColor:[UIColor clearColor]];
[cell.contentView setBackgroundColor:[UIColor redColor]];
2 голосов
/ 01 декабря 2012

Убедитесь, что перед определением цвета ячейки ваш backgroundView равен нулю

cell.backgroundView = nil;
cell.backgroundColor = [UIColor redColor];
1 голос
/ 02 марта 2011

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

Редактировать: вот причина для принятия, меня просто поразило: внимательно посмотрите на то, что вы получаете, когда вы дважды щелкаете по UITableViewCell в IB, который вы помещаете в свойnib, чтобы начать добавлять вещи к нему: вы не получаете вид, выглядящий как простой прямоугольник, вы получаете овальный прямоугольник, который довольно ясно говорит: представление содержимого.Таким образом, все, что вы можете сделать, это установить представление содержимого UITableViewCell в IB, а установка свойства цвета фона представления содержимого не приведет к изменению цвета в таблице.Как говорят в документах, UITableViewCells - это сложные звери со многими частями, и многое происходит за кулисами с точки зрения UITableView, регулирующего его и играющего с ним.

0 голосов
/ 19 октября 2015

Попробуйте это у меня работает:

- (void)tableView:(UITableView *)tableView1 willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [cell setBackgroundColor:[UIColor clearColor]];
    tableView1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"Cream.jpg"]];
}
0 голосов
/ 21 июля 2015
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
UIView *view = [[UIView alloc] init];
[view setBackgroundColor:[UIColor redColor]];
[cell setSelectedBackgroundView:view];}

Нам нужно изменить цвет в этом методе.

0 голосов
/ 20 января 2015

Я тоже получил эту проблему. В IB вы получаете возможность менять цвет фона ячейки при выборе ячейки. Это НЕ правильно. Вы должны перейти к схеме документа в левой части раскадровки и выбрать представление содержимого внутри ячейки. Измените фон представления содержимого. Теперь вы должны получить правильный цвет ячейки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...