2009-08-14 5 views
0

J'ai ajouté un bouton à une cellule tableview, mais j'ai pose deux problèmes:UIButton ne fonctionne pas dans la cellule tableview

1) J'ai invoqué une méthode setTarget:action: sur le bouton, mais le action: méthode ne sera jamais appelé:

[playButton addTarget:self action:@selector(playButtonPressed:) 
       forControlEvents:UIControlEventTouchUpInside]; 

2) la cellule elle-même finit par se toucher sélectionné sur, invoquant didSelectRowAtIndexPath, que je ne veux pas arriver.

J'ai vérifié que le bouton est au moins voir le toucher en définissant sa propriété showsTouchWhenHighlighted et le voyant «briller» lorsqu'il est pressé. Mais pour une raison quelconque, il semble que l'événement tactile soit ensuite transmis à sa vue d'ensemble des cellules au lieu d'être manipulé par le bouton lui-même.

J'ai essayé d'ajouter le bouton directement au contentView de la cellule, ainsi qu'à d'autres sous-vues de cellule, sans effet. J'ai également veillé à ce que les aperçus du bouton soient tous tactiles.

Des pensées?

Howard

Répondre

0

Il y a deux façons de le faire, le plus simple d'ajouter le bouton à la cellule avec IB, définissez un numéro d'étiquette sur le bouton et lorsque vous êtes dans la méthode cellForRowAtIndexPath mise à jour de l'utilisation de cellules quelque chose comme:

UIButton *myButton = (UIButton *)[cellYouAreUpdating viewWithTag:-1969]; 

étant -1969 le numéro d'étiquette précédemment défini dans IB et cellYouAreUpdating la référence de cellule. Après cela, vous aurez une référence au bouton dans la cellule et vous pouvez définir la cible d'ajout avec le sélecteur approprié.

Espérons que cela aide.

0

Mon être votre bouton Y ou l'axe Y + hauteur est supérieure à sa vue superbe (Super vue peut être cellulaire ou contentView de la cellule) vérifier la heght de superview

+0

Je ne pense pas que c'était le problème. J'aurais aimé fournir un peu plus de contexte de code lorsque j'ai posté la question, parce que je soupçonne que le problème est ailleurs. Depuis, j'ai ajouté des boutons aux cellules uitableview sans problème. Le code ci-dessus est identique à ce qui fonctionne pour moi maintenant. Les deux seules lignes supplémentaires que j'utilise actuellement sont: \t \t button.frame = CGRectMake (244, 5, 75, 40); [button setTitle: @ "Terminé!" forState: UIControlStateNormal]; – hkatz

0

-> Pour votre premier problème, l'utilisation ce code

UIButton *imgV1 = [UIButton buttonWithType:UIButtonTypeCustom]; 
[imgV1 setFrame:CGRectMake(0, 0, 320, 53)]; 
[imgV1 setBackgroundColor:[UIColor clearColor]]; 
[imgV1 setImage:[UIImage imageNamed:@"expired.png"] forState:UIControlStateNormal]; 
[imgV1 addTarget:self action:@selector(show_product_details:) forControlEvents:UIControlEventTouchUpInside]; 

-> Pour votre deuxième utilisation de ce problème dans

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath  { 

[setSelectionStyle cellulaire: UITableViewCellSelectionStyleNone]; }