2015-09-15 1 views
0

j'ai un UITableView dans mon contrôleur de vue et j'ai une coutume UITableViewCell classe qui est utilisée pour réaliser le dessin des images, du texte dessin, lignes etc ..Que se passe-t-il lorsque nous tapons sur un UITableViewCell personnalisé dans iOS?

Toutes ces situations se drawRect: au sein de la méthode. En dehors de cela, je l'ai vu quelques méthodes utilisées avec drawRect:

Ils sont ..

-(void)setNeedsDisplay 
-(void)setSelected:(BOOL)selected animated:(BOOL)animated 
-(void)setEditing:(BOOL)editing animated:(BOOL)animated 
-(void)layoutSubviews 

Ma question est, comment/quand avons-nous utilisé ces méthodes? PS: Mon vrai problème est que, lorsque j'appuie sur cette cellule personnalisée, les images et les textes que je dessine en utilisant drawRect: étaient masqués par le fond de sélection. C'est parce que le système remplace toutes les sous-vues de UITableViewCell avec l'arrière-plan de sélection. Mais, je veux changer seulement la couleur d'arrière-plan de la cellule seule quand elle a été tapée.

Juste confus !!

Répondre

0

Vous ne voulez probablement pas faire l'ensemble de l'image, du texte et du dessin au trait dans -drawRect: (à moins que vous ne le pensiez vraiment!). Au contraire, vous devriez mettre le travail d'ajouter des sous-vues dans -layoutSubviews. Maintenant, si vous ne faites que personnaliser la hiérarchie de vue de votre cellule de tableau personnalisée, veillez à ajouter les sous-vues que vous avez à la cellule contentView. Il y a beaucoup d'exemples pour savoir comment faire. Que devrait gérer l'ordre de couche lorsque vous appuyez sur la cellule et iOS ajoute la vue de sélection.

Quant à vos autres questions que vous voudrez probablement lire la documentation sur le cycle de vie de UIView:

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/

+0

Merci pour l'info. Je vais certainement regarder ça. – Confused

0

Ajouter votre subviews à ce contentView plutôt que la cellule elle-même la cellule.

En outre, vous pourriez souhaiter cell.selectionStyle = UITableViewCellSelectionStyleNone pour éviter que iOS ne fasse une mise en surbrillance.

Si vous sous-classez UITableViewCell et que vous remplacez drawRect:, cela ne fonctionnera pas. Au lieu de cela, ajoutez une vue enfant au contentView et implémentez drawRect dans cet enfant.

+0

Je dois mettre en surbrillance la cellule lorsqu'elle a été sélectionnée. Mais je ne veux pas cacher le contenu de ma cellule. Est-ce qu'il y a un autre moyen? – Confused