un button dans UITableviewCell

J'ai UItableViewCell créé avec un file nib, et j'ai mis dans ma cellule un button. J'ai créé un IBAction pour associer une action quand l'user clique sur le button. Mais j'ai un crash et je ne sais pas quel est le problème, j'ai mis toutes les choses nécessaires.

//in my .h -(IBAction)go; //in my .m -(IBAction)go { NSLog(@"hello"); } 

mais j'ai un crash et rien n'est montré dans le debugging de la console.

comment puis-je définir un button dans UITableviewcell et associer une action à ce button. Merci pour votre réponse

Créez un button par programme et ajoutez-le à la sous-vue de la cellule. Définissez le tag en tant que valeur indexPath.row et ajoutez la cible au button. Maintenant, dans la cible, vous pouvez simplement utiliser:

  -(void)buttonInsideCellIsPressed : (id)sender{ UIButton *button = (UIButton *)sender; NSIndexPath *indexPath = [NSIndexPath indexPathForRow:button.tag inSection:0]; CustomCell *cell = (CustomCell*)[myTable cellForRowAtIndexPath:indexPath]; // Here you may change the background image for the button for rollover or anything } 

À mon avis, le réglage de l'label est un mauvais moyen. Cela limite l'utilisation du tag ailleurs dans l'application.

 NSIndexPath *indexPath = [self.tableView indexPathForCell:(UITableViewCell *)[[sender superview] superview]]; 

En utilisant cette approche, vous pouvez réellement récupérer l'IndexPath pour la cellule.

C'est ce qui a fonctionné pour moi…

 - (void)yourButton:(id)sender{ NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint: currentTouchPosition]; CustomCellClass *cell = (CustomCellClass *)[self.tableView cellForRowAtIndexPath:indexPath]; NSSsortingng *myFooText = cell.cellLabelFoo.text; } 

Créez un button par programme et ajoutez-le à la sous-vue de la cellule.

Vous pouvez associer un IBAction à un button de manière programmatique sans utiliser de code PIN du tout en utilisant ce code:

 [myButton addTarget:self action: @selector(buttonPressed) forControlEvents:UIControlEventTouchUpInside]; 

L'accident peut être dû aux raisons suivantes

  1. Vous avez ajouté un controller de vue à votre cellule et l'avez libéré. Par conséquent, lorsqu'il est appuyé sur le button, il n'est pas en mesure de find le controller pour gérer le robinet
  2. Vous n'avez pas spécifié un sélecteur valide lorsque vous ajoutez le callback de button pour un événement de prise
  3. Vous pouvez accéder à des données qui sont NULL

Si vous publiez du code sur la façon dont vous créez votre cellule, vous pourrez get plus d'informations à ce sujet.

vous devez créer une méthode et lui transmettre un identifiant (id); essayez ceci ci-dessous .. espoir cela fonctionne .. c'est vous écrire où vous avez atteint le button et appeler la méthode ..

 [myButton addTarget:self action: @selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside]; -(void)buttonPressed:(id)sender{ nslog(@"hi"); } 

espère que cela fonctionne