2010-04-09 10 views
12

Estoy tratando de establecer la etiqueta backgroundColor de mis UITableViewCells y no hace absolutamente nada en absoluto. Me pregunto si hay otra forma de hacerlo, ¡así que lo estoy preguntando!textLabel.backgroundColor en UITableViewCell no funciona

He intentado esto:

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

Y no funciona, todo lo demás?

Gracias!

Respuesta

41

Asumo que está tratando esto en cellForRowAtIndexPath.

De acuerdo con la UITableViewCell class reference:

Nota: Si desea cambiar el color fondo de una celda (mediante el establecimiento de el color de fondo de una celda a través de la propiedad backgroundColor declarado por UIView) se debe hacerlo en el tableView: willDisplayCell: forRowAtIndexPath: método del delegado y no en tableView: cellForRowAtIndexPath: de el origen de datos.

Así que hacer esto:

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

Si necesita un control más preciso sobre la pantalla celular, una forma fácil es diseñar en IB y cargarlo desde la punta en cellForRowAtIndexPath. Consulte la sección "Cargar pers-Tabla Ver células a partir de cacao archivos" en this page en la tabla Ver Guía de programación.

+1

impresionante, estaba buscando por todas partes para esto. Gracias –

0

actualización de IOS 9.3. Esto realmente funciona bien en cellForRowAtIndexPath usando IOS 9.3. También Nota: Para cambiar el color de toda la utilización de células:

cell.contentView.backgroundColor = [UIColor redcolor];

Cuestiones relacionadas