2010-04-09 21 views
12

Sto provando a impostare l'etichetta backgroundColor del mio UITableViewCells e non fa assolutamente nulla. Mi chiedo se c'è un altro modo per farlo, quindi ti sto chiedendo!textLabel.backgroundColor su UITableViewCell non funziona

ho provato questo:

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

E non funziona, tutto il resto?

Grazie!

risposta

41

Suppongo che stiate provando questo in cellForRowAtIndexPath.

Secondo il UITableViewCell class reference:

Nota: Se si desidera cambiare il colore di una cella sfondo (impostando il colore di sfondo di una cella tramite la proprietà backgroundColor dichiarato dal UIView) si deve farlo nel tableViewView: willDisplayCell: forRowAtIndexPath: metodo del delegato e non in tableView: cellForRowAtIndexPath: di l'origine dati.

Fate così:

- (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 
} 

Se avete bisogno di un controllo più preciso sulla visualizzazione delle cellule, un modo semplice è quello di progettare in IB e caricarlo dal pennino in cellForRowAtIndexPath. Vedere la sezione "Caricamento delle celle personalizzate - Visualizzazione delle celle dai pennini" su this page nella Guida alla programmazione di Visualizza tabella.

+1

Impressionante, stava cercando dappertutto questo. Grazie –

0

Aggiornamento per IOS 9.3. Questo in realtà funziona bene in cellForRowAtIndexPath utilizzando IOS 9.3. Nota: per modificare il colore dell'intera cella, utilizzare:

cell.contentView.backgroundColor = [UIColor redColor];

Problemi correlati