Probé algunos de los anteriores, y realidad, yo prefiero crear mi propia subclase de UITableViewCell y luego anular los/touchesCancelled/touchesEnded métodos touchesBegan. Para hacer esto, ignore todas las propiedades selectedBackgroundView y highlightedColor en la celda y, en su lugar, simplemente establezca estos colores manualmente cada vez que se invoque uno de los métodos anteriores. Por ejemplo, si desea establecer la célula para tener un fondo verde con el texto rojo, probar este (dentro de la subclase de celda personalizado):
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//Set backgorund
self.backgroundColor = [UIColor themeBlue];
//Set text
self.textLabel.textColor = [UIColor themeWhite];
//Call super
[super touchesBegan:touches withEvent:event];
}
Tenga en cuenta que para que esto funcione, es necesario establecer:
self.selectionStyle = UITableViewCellSelectionStyleNone;
De lo contrario, primero obtendrá el estilo de selección actual.
EDIT: Sugiero usar el método touchesCancelled para volver a los colores originales de la celda, pero simplemente ignore el método touchesEnded.
¡Recomiendo encarecidamente el enfoque de Matt Gallagher sobre el que usted aceptó! Por favor, considere echarle un vistazo si aún no lo ha hecho. –
Las respuestas en esta publicación son muy complicadas. Todos, por favor ignoren a los más calificados y voten las respuestas correctas, que están en la parte inferior. – bentford