kits desarrollador iphone cocoa-touch uitableview interface-builder

iphone - desarrollador - xcode kits



No se puede establecer el color de fondo de UITableViewCell en IB (3)

He creado un grupo de celdas que reutilizo en una vista de tabla. Todas esas celdas solo tienen diferentes UILabel dentro de ellas y algunos UIImageView (nada cubre la celda completa).

Establecer el color de fondo en IB no tiene ningún efecto (siempre es blanco o transparente, no puede decir cuál de ellos). Pero si presiono Command-R (simular interfaz) la celda tiene el color de fondo correcto en el simulador.

Intenté configurarlo en tableView:cellForRowAtIndexPath: pero tampoco funciona como yo pensaría.

Esto hace el truco:

cell.contentView.backgroundColor = [UIColor redColor];

pero estos no tienen ningún efecto (incluso si configuro cell.contentView.backgroundColor para clearColor ):

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

Configuré todas las cosas de diseño / fuente / fondo en IB. ¿Alguna idea de por qué esto no funciona en este caso?

¿Por qué debo modificar el contentView de contentView y no los de backgroundView ?

Parece ser un problema común. ¿Podría alguien señalarme en la dirección correcta para (finalmente) entender cómo se manejan los colores de fondo dentro de una celda de vista de tabla?



Hay una solución más fácil: cuando crea una UITableViewCell en Interface Builder, simplemente arrastre y suelte una UIView adicional para que cubra toda la UITableViewCell que está creando dentro de IB. Coloque sus elementos de IU adicionales encima de este UIView adicional. Puede configurar esta UIView adicional en cualquier fondo que desee.

Hay bastantes respuestas en que sugieren que cambie el color de fondo de su UITableViewCell usando una línea de código como esta:

cell.contentView.backgroundColor = [UIColor redColor];

Si agrega una sombra contentView a su celda ajustando ligeramente el tamaño del marco de contentView , puede encontrar que esta línea también cambiará el color de fondo de su celda y el color de su área de sombra contentView .


Para cambiar el color de fondo de la celda, debe hacerlo en el método willDisplayCell: forRowAtIndexPath: Esto se menciona en la documentación UITableViewCell cerca de la parte superior en una nota en caja. Así que tú necesitas:

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

ContentView es solo la subvista recomendada para colocar controles personalizados de modo que la celda se distribuya correctamente cuando se está editando la tabla.