2011-10-16 2 views
0

J'ai deux étiquettes avec deux étiquettes séparées chacune.Comment détecter quel UILabel a été pressé sur une UITableviewcell personnalisée?

Je voudrais détecter quelle étiquette a été pressée en vérifiant l'étiquette.

A l'intérieur du

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {} 

je peux récupérer un d'entre eux par code comme ceci:

cell = [walltable cellForRowAtIndexPath:indexPath]; 
topLabel= (UILabel *)[cell.contentView.subviews objectAtIndex:0]; 

mais je ne sais pas celui qui a été pressé.

Existe-t-il un moyen de déterminer quelle étiquette a été pressée par l'utilisateur?

Répondre

0

Quelque chose importante que je tiens à souligner: votre référence à l'étiquette:

topLabel= (UILabel *)[cell.contentView.subviews objectAtIndex:0]; 

est pas la façon générique correcte, de le faire. Je recommanderais d'attacher les éléments dans votre cellule à un IBOutlet, et obtenir la référence à partir de là. Quant à votre question sur les événements tactiles UILabel, je pense un bon moyen d'y parvenir est d'ajouter un UITapGestureRecognizer à votre étiquette, comme ceci:

UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(firstLabelTapped)]; 
[firstLabel addGestureRecognizer:tgr]; 
[tgr release]; 

Faites la même chose avec la deuxième étiquette. Si vous voulez renvoyer des informations au contrôleur de vue de TableView, faites-le avec la délégation. Bonne chance!

0

Une méthode, comme suggéré ci-dessus, est d'attribuer une étiquette à chaque étiquette, puis d'évaluer l'étiquette de l'appelant UILabel dans votre rappel.

Une autre approche si vous utilisez une personnalisée cellule (par exemple, un UITableViewCell sous-classé, par rapport à une norme UITableViewCell auquel vous avez ajouté du contenu/mise en page personnalisée) est de définir simplement chacune des deux étiquettes en tant que propriétés de votre cellule sous-classée. Si les étiquettes sont affectées en tant que propriétés respectives, vous pouvez évaluer ces propriétés par rapport à l'appelant et déterminer quelle étiquette a été enfoncée.

Questions connexes