Почему не работает цвет фона UITableViewCell (устанавливается в конструкторе интерфейсов)?
Почему не работает цвет фона UITableViewCell (устанавливается в конструкторе интерфейсов)?
Из некоторых поисков я замечаю, что следующий код, установленный в вашем пользовательском подклассе UITableViewController, работает (см. Ниже):
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.backgroundColor = [UIColor redColor];
}
Но я все же хотел бы просто понять, почему у конструктора интерфейса есть настройка цвета фона для TableViewCell, которая, по-видимому, эффективно не работает?
Ответы
Ответ 1
(попробуйте это)
Дизайн Apple IB является универсальным для применения к нескольким видам компонентов, а также ориентирован на высокотехнологичную аудиторию (разработчиков). Следовательно, он не был разработан (как приложение) для полной настройки интерфейса для каждого типа компонента/ситуации. Таким образом, в этом случае способность к по-видимому установить фоновый цвет несколько вводит в заблуждение.
Ответ 2
Немного поздно, но я просто столкнулся с этой проблемой... Настройка цвета фона на contentView
отлично работает:
cell.contentView.backgroundColor = [UIColor redColor];
Ответ 3
Что сработало для меня - это создать мой собственный объект UIView, который будет установлен в качестве фонового представления UITableViewCell. В cellForRowAtIndexPath:
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];
Ответ 4
Попытка установить цвет фона самого UITableViewCell заключается не в том, как вы должны это делать. Ячейка таблицы имеет набор из пяти полезных представлений, к которым вы можете получить доступ, один из которых backgroundView
.
Рекомендуемое чтение:
http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html
а затем:
http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html
Ответ 5
Вы всегда должны предоставлять изменения для ячеек в tableView:willDisplayCell:forRowAtIndexPath:
вместо метода tableView:cellForRowAtIndexPath:
в соответствии с документацией Apple.
Это работает!!
Ответ 6
[cell.textLabel setBackgroundColor:[UIColor clearColor]];
[cell.contentView setBackgroundColor:[UIColor redColor]];
Ответ 7
Перед определением цвета ячейки убедитесь, что backgroundView
имеет значение null
cell.backgroundView = nil;
cell.backgroundColor = [UIColor redColor];
Ответ 8
Это просто и работает: в построителе интерфейсов добавьте объект просмотра в UITableViewCell с одинаковыми размерами и поместите свои элементы управления в это представление. Затем вы получите любой цвет фона, который вы хотите.
Изменить: вот причина для принятия, это просто поразило меня: внимательно посмотрите на то, что вы получаете, когда вы дважды нажимаете на UITableViewCell в IB, который вы помещаете в свой наконечник, чтобы начать добавлять к нему материал: t получить простой прямоугольник, смотрящий взгляд, вы получите овальный прямоугольник, который говорит довольно четко: Content View. Таким образом, все, что вы можете сделать, - это установить представление содержимого UITableViewCell в IB, а установка свойства цвета фона в представлении контента не приведет к изменению цвета в таблице. Как утверждают документы, UITableViewCells - это сложные звери со многими частями, которые часто происходят за кулисами с точки зрения настройки UITableView и возиться с ним.
Ответ 9
Он отлично работает, если вы выбираете tableview и задаете фон, например, красный цвет всей таблицы будет красным.
возможно, вы не связываете таблицу или что-то в ней
надеюсь, что это помогло
Ответ 10
Y нет, используйте setBackgroundColor
self.table.separatorColor=[UIColor whiteColor];
[table setBackgroundColor:[UIColor colorWithRed:.8 green:.8 blue:1 alpha:1]];
Ответ 11
Вы можете частично сделать это в Interface Builder (вероятно, недавно добавлен в Xcode):
- Разверните ячейку в структуре документа раскадровки и выберите "Просмотр содержимого"
- Установить цвет фона содержимого в инспекторе атрибутов
- Выберите каждый элемент контента в ячейке и установите цвета фона
к ClearColor
Тем не менее, вы не видите способ установки фона аксессуара.
Ответ 12
Я тоже получил эту проблему.
В IB вы получаете возможность изменять цвет фона ячейки при выборе ячейки. Это НЕ правильно. Вы должны перейти к контуру документа слева от раскадровки и выбрать представление содержимого внутри ячейки. Измените фон содержимого. Теперь вы должны получить правильный цвет ячейки.
Ответ 13
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
UIView *view = [[UIView alloc] init];
[view setBackgroundColor:[UIColor redColor]];
[cell setSelectedBackgroundView:view];}
Нам нужно изменить цвет в этом методе.
Ответ 14
Попробуй, это сработает для меня:
- (void)tableView:(UITableView *)tableView1 willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
[cell setBackgroundColor:[UIColor clearColor]];
tableView1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"Cream.jpg"]];
}