2012-05-19 9 views
10

Ho una personalizzazione UITableViewCell. Ha 3 etichette personalizzate al suo interno con testo personalizzato.Colore del carattere di selezione cella per la visualizzazione tabella personalizzata

Quando tocco la cella, voglio che il colore del testo di tutte quelle etichette diventi bianco. proprio come il comportamento dell'app E-mail UITableViewCell.

Per questo, ho scritto questo nella classe di celle personalizzate.

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
{ 
    [super setSelected:selected animated:animated]; 

    // Configure the view for the selected state 

    if (self.selected) { 
     _subjectLabel.textColor = [UIColor whiteColor]; 
     _messageLabel.textColor = [UIColor whiteColor]; 
     _usernameLabel.textColor = [UIColor whiteColor]; 
    }else { 
     _subjectLabel.textColor = [UIColor blackColor]; 
     _messageLabel.textColor = [UIColor grayColor]; 
     _usernameLabel.textColor = [UIColor blackColor]; 
    } 



} 

Sono stato in grado di farlo. Ma non è così scorrevole come nell'app Email. Il colore cambia solo dopo un piccolo ritardo. Quale metodo di UITableViewCell dovrei ignorare per inserire questo codice. Conosco le opzioni seguenti, ma non danno il comportamento sulle etichette personalizzate nella cella personalizzata.

typedef enum { 
    UITableViewCellSelectionStyleNone, 
    UITableViewCellSelectionStyleBlue, 
    UITableViewCellSelectionStyleGray 
} UITableViewCellSelectionStyle; 

risposta

23

Imposta l'etichetta evidenziata ColoreColore e tutto ciò verrà fatto automaticamente. Non dovresti fare nulla di speciale in setSelected affatto.

ad es.

_subjectLabel.highlightedTextColor = [UIColor whiteColor]; 
+0

grazie. ha funzionato! – Anand

+0

Solo un piccolo promemoria, se la cella è personalizzata, puoi aprire lo xib e sotto l'ispettore Attributi puoi impostare il colore "Evidenziato". –

1

Quando selezioniamo una cella di UITableView, -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath metodo chiamato immediatamente, è possibile utilizzare questo.

+0

'- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath' fuochi solo quando si prende il dito fuori dalla cella .. non quando si sta tenendo su di esso .. voglio il colore per cambiare il momento in cui tengo il dito sulla cella .. guarda l'app e-mail per esempio – Anand

+0

In questo caso puoi usare il metodo touchBegan, non appena metti il ​​dito sopra la cella verrà chiamato, al momento quale metodo sei usando? – rishi

+0

attualmente il codice sopra funziona. ma con un piccolo ritardo – Anand

Problemi correlati