2010-04-09 20 views
12

Próbuję ustawić tło backgroundColor moich UITableViewCells i nie robi absolutnie nic. Zastanawiam się, czy jest inny sposób robienia tego, więc proszę!textLabel.backgroundColor na UITableViewCell nie działa

Próbowałem to:

cell.textLabel.backgroundColor = [UIColor redColor]; 
cell.backgroundColor = [UIColor redColor]; 

I to nie działa, coś jeszcze?

Dzięki!

Odpowiedz

41

Zakładam, że próbujesz to w cellForRowAtIndexPath.

Według UITableViewCell class reference:

Uwaga: Jeśli chcesz zmienić kolor tła komórki (poprzez ustawienie kolor tła komórki za pośrednictwem właściwości backgroundColor deklarowanej przez UIView) Cię musi to zrobić w tableView: willDisplayCell: forRowAtIndexPath: metoda delegata, a nie w tableView: cellForRowAtIndexPath: z źródło danych.

Więc to zrobić:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    cell.backgroundColor = [UIColor redColor]; //must do here in willDisplayCell 
    cell.textLabel.backgroundColor = [UIColor redColor]; //must do here in willDisplayCell 
    cell.textLabel.textColor = [UIColor yellowColor]; //can do here OR in cellForRowAtIndexPath 
} 

Jeśli potrzebujesz lepszą kontrolę nad wyświetlaczu komórki, łatwym sposobem jest zaprojektowanie go w IB i załadować go ze stalówką w cellForRowAtIndexPath. Zobacz sekcję "Ładowanie niestandardowych widoków tabel z plików końcówek" na stronie this page w Przewodniku po programowaniu w widoku tabeli.

+1

Niesamowite, szukałem wszędzie tego. Dzięki –

0

Aktualizacja dla IOS 9.3. To faktycznie działa poprawnie w cellForRowAtIndexPath przy użyciu IOS 9.3. Uwaga: Aby zmienić kolor całej komórki użyj:

cell.contentView.backgroundColor = [UIColor redColor];

Powiązane problemy