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

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

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

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

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

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

4b9b3361

Ответ 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"]];
}