2012-03-16 3 views
7

J'ai dans ma section Vue d'en-tête de table:Comment passer un argument dans @selector dans UITapGestureRecognizer?

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(sectionHeaderTapped:)]; 

Je veux passer le numéro de section dans la méthode sectionHeaderTapped donc je peux reconnaître que la section se est exploité.

Ma mise en œuvre de la méthode ressemble à ceci:

-(void)sectionHeaderTapped:(NSInteger)sectionValue { 
    NSLog(@"the section header is tapped ");  
} 

Comment puis-je y parvenir?

Répondre

15

La méthode sectionHeaderTapped doit avoir l'une des signatures suivantes:

- (void)sectionHeaderTapped:(UITapGestureRecognizer *)sender; 
- (void)sectionHeaderTapped; 

Vous devez trouver la cellule qui a été exploité en utilisant les coordonnées du robinet.

-(void)sectionHeaderTapped:(UITapGestureRecognizer *)gestureRecognizer 
{ 
    CGPoint tapLocation = [gestureRecognizer locationInView:self.tableView]; 
    NSIndexPath *tapIndexPath = [self.tableView indexPathForRowAtPoint:tapLocation]; 
    UITableViewCell* tappedCell = [self.tableView cellForRowAtIndexPath:tapIndexPath]; 
} 

Vous pouvez probablement obtenir l'en-tête de section en utilisant cette méthode. Mais il peut être plus facile d'attacher un reconnaisseur de gestes différent à chaque en-tête de section.

- (UIView*)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    // ... 
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(sectionHeaderTapped:)]; 
    [headerView addGestureRecognizer:tapGesture]; 
    return headerView; 
} 

Et puis

-(void)sectionHeaderTapped:(UITapGestureRecognizer *)gestureRecognizer 
{ 
    UIView *headerView = gestureRecognizer.view; 
    // ... 
} 
+0

oui j'ai utilisé différents gestes pour chaque section, pas la meilleure façon, mais plus simple ... Merci –

+0

préfet répondre .... merci .. –

0

Une alternative: Vous pouvez ajouter UIButton sur le tableHeaderView et cliquez sur le bouton.

Questions connexes