J'ai essayé certaines des solutions ci-dessus, et En fait, je préfère créer ma propre sous-classe de UITableViewCell et surcharger les méthodes touchesBegan/touchesCancelled/touchesEnded. . Pour ce faire, ignorez toutes les propriétés selectedBackgroundView et highlightedColor de la cellule, et définissez plutôt ces couleurs manuellement chaque fois que l'une des méthodes ci-dessus est appelée. Par exemple, si vous souhaitez que la cellule ait un arrière-plan vert avec un texte rouge, essayez ceci (dans votre sous-classe de cellule personnalisée) :
- (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];
}
Notez que pour que cela fonctionne, vous devez définir :
self.selectionStyle = UITableViewCellSelectionStyleNone;
Sinon, vous obtiendrez d'abord le style de sélection actuel.
EDIT : Je suggère d'utiliser la méthode touchesCancelled pour revenir aux couleurs originales des cellules, mais d'ignorer la méthode touchesEnded.
0 votes
Je recommande vivement l'approche de Matt Gallagher plutôt que celle que vous avez acceptée ! N'hésitez pas à y jeter un coup d'œil si vous ne l'avez pas encore fait.
0 votes
Les réponses à ce post sont tellement erronées. Tout le monde est prié d'ignorer les réponses les mieux notées et de voter pour les réponses correctes, qui se trouvent en bas de page.