it-swarm.com.ru

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

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

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

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

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

55
Greg

(попробуй это)

Дизайн Apple IB является общим для применения к различным компонентам, а также предназначен для высокотехнологичной аудитории (разработчиков). Следовательно, он не был разработан (как приложение) для полной индивидуальной настройки интерфейса для каждого типа компонента/ситуации. Таким образом, в этом случае возможность установить цвет фона немного вводит в заблуждение.

0
Greg

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

cell.contentView.backgroundColor = [UIColor redColor];
69
chris

Для меня сработало создание собственного объекта 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];
16
Shiprack

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

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

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

а потом:

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

11
occulus

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

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

7
Subbu
[cell.textLabel setBackgroundColor:[UIColor clearColor]];
[cell.contentView setBackgroundColor:[UIColor redColor]];
3
Warewolf

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

cell.backgroundView = nil;
cell.backgroundColor = [UIColor redColor];
2
felipecamposclarke

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

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

1
Bogatyr

Вы можете частично сделать это в Интерфейсном Разработчике (вероятно добавленный в XCode недавно):

  • Разверните ячейку в структуре документа раскадровки и выберите «Представление содержимого»
  • Установить цвет фона представления содержимого в инспекторе атрибутов
  • Выделите каждый элемент содержимого в ячейке и установите их цвет фонаTo ClearColor

Все еще не вижу способа установить вспомогательный фон все же.

0
Symmetric

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

- (void)tableView:(UITableView *)tableView1 willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [cell setBackgroundColor:[UIColor clearColor]];
    tableView1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"Cream.jpg"]];
}
0
user4919266

Да нет, используйте setBackgroundColor 

self.table.separatorColor=[UIColor whiteColor];
[table setBackgroundColor:[UIColor colorWithRed:.8 green:.8 blue:1 alpha:1]];
0
Splendid
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
UIView *view = [[UIView alloc] init];
[view setBackgroundColor:[UIColor redColor]];
[cell setSelectedBackgroundView:view];}

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

0
Hemanshu Liya

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

надеюсь, это помогло 

0
Csabi

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

0
Odd-Arne