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?
Encontré este artículo de Cocoa With Love realmente útil, ya que se ve una vista de tabla totalmente personalizada y cómo hacerlo.
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.