color de selección para un UITableViewCell
-
05-07-2019 - |
Pregunta
Si tengo un UITableViewCell
personalizado que no usa la textLabel
integrada en la celda, sino que hace su propio dibujo, ¿cómo puedo cambiar la apariencia de la contentView
en la selección, como ocurre automáticamente con el texto predeterminado (personalizable al configurar selectedTextColor:
)?
Si cambio tableView: willSelectRowAtIndexPath:
, entonces solo se actualiza cuando el fondo de selección azul está arriba, pero no mientras esté animando, como quiero.
Solución
Simplemente no subclasifique UITableViewCell y use el comportamiento predeterminado. Puede personalizar completamente una celda sin ninguna subclase.
Lea este artículo para obtener más detalles.
Otros consejos
Agregue este código en el método cellForRowAtIndexPath de su vista de tabla y solo cambie el color esperado para el estilo de selección UITableViewCell.
//-------------------------------------------------------------------------
//background selected view
UIView *viwSelectedBackgroundView=[[UIView alloc]init];
viwSelectedBackgroundView.backgroundColor=[UIColor colorWithRed:124.0/255.0 green:202.0/255.0 blue:227.0/255.0 alpha:1.0];
cell.selectedBackgroundView=viwSelectedBackgroundView;
//-------------------------------------------------------------------------
Si ha subclasificado un UITableViewCell, puede personalizar los elementos de la celda anulando lo siguiente:
- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated {
if(highlighted) {
self.backgroundColor = [UIColor redColor];
} else {
self.backgroundColor = [UIColor clearColor];
}
[super setHighlighted:highlighted animated:animated];
}