2010-01-23 6 views
5

J'ai une coutume UITableViewCell avec un UILabel et un UITextView dedans.UITextView highlightTextColor ou une option similaire?

Je souhaite que le texte de ces deux éléments apparaisse en blanc lorsque l'utilisateur met en surbrillance UITableViewCell. Il est évidemment très simple de définir le highlightedTextColor du UILabel, mais le UITextView ne semble avoir aucun type de propriété similaire. Est-ce que je vais devoir changer manuellement la couleur du UITextView chaque fois que la cellule est mise en surbrillance/non éclairée ou y a-t-il un moyen plus facile d'accomplir cela?

Merci!

Répondre

9

J'ai trouvé ça et c'était beaucoup plus facile que je ne le pensais. Juste besoin d'utiliser la méthode UITableViewCellsetHighlighted.

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated { 
    [super setHighlighted:highlighted animated:animated]; 

    if (highlighted) { 
     [self.myTextView setTextColor:[UIColor whiteColor]]; 
    } else { 
     [self.myTextView setTextColor:[UIColor blackColor]]; 
    } 

} 
+0

Pour empêcher les lignes non sélectionnables de changer la couleur du texte, modifiez à: if (mis en surbrillance && (self.selectionStyle! = UITableViewCellSelectionStyleNone)) – capikaw

+0

Cela fonctionne uniquement pour la première et la dernière rangée pouvez-vous me dire pourquoi? –

+0

désapprouvé je pense – Esqarrouth

2

La solution affichée par l'auteur est à moitié juste pour ma situation. Vous avez besoin de garder à l'esprit que les événements suivants se produisent:

  1. appuyez -> setHighlighted: OUI animé: est appelé
  2. presse up -> setHighlighted: NO animation est appelé
  3. set sélection - > setSelected: OUI animé est appelé

Sachant cela, et selon la façon dont vous voulez que le TableCell à regarder quand highighted vs quand il est sélectionné déterminera si vous avez besoin de mettre en œuvre setHighlighted: animés :, setSelected: animation: ou les deux méthodes .

Pour le look que je veux, j'ai besoin de mettre en œuvre les deux méthodes.