Ho provato alcuni di quanto sopra, e realtà preferisco creare il mio sottoclasse di UITableViewCell e poi sostituire le/touchesCancelled/touchesEnded metodi touchesBegan. Per fare ciò, ignora tutte le proprietà SelectedBackgroundView e highlightColor sulla cella, e invece imposta questi colori manualmente ogni volta che uno dei metodi sopra indicati viene chiamato. Ad esempio, se si desidera impostare il cellulare per avere uno sfondo verde con testo rosso, provate questo (all'interno della sottoclasse cella personalizzato):
- (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];
}
Si noti che per questo lavoro, è necessario impostare:
self.selectionStyle = UITableViewCellSelectionStyleNone;
Altrimenti, per prima cosa si ottiene lo stile di selezione corrente.
EDIT: Suggerisco utilizzando il metodo touchesCancelled per ripristinare i colori originali delle cellule, ma semplicemente ignorare il metodo touchesEnded.
fonte
2012-07-22 12:02:16
Consiglio vivamente l'approccio di Matt Gallagher rispetto a quello che hai accettato! Ti preghiamo di dare un'occhiata se non l'hai già fatto. –
Le risposte in questo post sono così incasinate. Tutti si prega di ignorare quelli più votati e andare a votare le risposte corrette corrette, che sono in fondo. – bentford