Je sous-classerais probablement UIButton pour avoir une instance de NSIndexPath. De cette façon, chaque UIButton individuel dans un UITableViewCell peut "savoir" où il se trouve dans la vue de table, ainsi quand vous pressez le bouton, vous pouvez appeler une méthode qui prend un NSIndexPath et pousse une nouvelle vue, semblable à ce que vous faites dans -didSelectRowAtIndexPath:
mais avec votre autre vue à la place (peut-être lui donner un nom de méthode descriptive comme -didPressButtonAtIndexPath:
). Au lieu d'utiliser Interface Builder pour ce faire, vous devez ajouter une méthode à la sous-classe UIButton elle-même qui à son tour appelle une méthode sur votre contrôleur de vue. Ensuite, pour chaque UIButton, vous pouvez utiliser la méthode UIControl -addTarget:action:forControlEvents:
. Demandez à l'UIButton d'appeler sa propre méthode, qui appelle la méthode du contrôleur. Votre solution pourrait ressembler à:
// MyButton.h
@interface MyButton : UIButton {
NSIndexPath *myIndexPath;
MyViewController *viewController;
}
- (void)didPressButton;
@end
// MyViewController.h
@interface MyViewController { }
- (void)didPressButtonAtIndexPath:(NSIndexPath *)indexPath;
@end
Ensuite, lorsque vous construisez vos cellules, pour chaque bouton Ajouter un appel:
[button addTarget:button
action:@selector(didPressButton)
forControlEvents:UIControlEventTouchDown];
Et enfin, mettre en œuvre -didPressButton
pour ressembler à:
- (void)didPressButton {
[controller didPressButtonAtIndexPath:myIndexPath];
}
Merci Tim. J'étais sur le point de répondre à ma propre question. J'ai pris une autre approche. Avant cette question, j'ai dû personnaliser une cellule, j'ai donc fait une sous-classe de UITableViewCell pour ajouter des images et des étiquettes supplémentaires. Donc, aussi, dans IB j'ai ajouté un bouton. Dans mon code, la cellule de la sous-classe, j'ai ajouté un IBACtion et connecter cette action avec l'événement "Touch Down" de ce bouton. Pour savoir, j'ai imprimé quelque chose dans NSLog pour savoir que j'allais participer à l'événement. Pour ce que je vois, en ce moment je ne peux pas savoir quel bouton a été pressé. Je suppose que votre solution résout cela. droite? Le problème est que je ne comprends pas grand chose, @selector par exemple – gvalero87
BTW merci pour vous répondez c'est vraiment bon. C'est juste que je suis vraiment nouveau à ça. Juste une semaine de programmation en tout ce qui concerne mac: S ... En ce moment j'essaie de comprendre comment obtenir une nouvelle vue modale lorsque vous appuyez sur ce bouton. – gvalero87
Salut Tim, s'il vous plaît répondre à quelques questions que j'ai. Vous avez dit que lorsque je construisais ma cellule, je devais le faire (code 2). J'ai une sous-classe tableviewcell qui est connectée au fichier xib qui contient la vue pour cette cellule, donc j'ai juste ajouté un bouton à cette vue et l'ai connecté à un IBOutle dans la sous-classe tableViewcell. Alors, que voulez-vous dire lorsque vous créez cette cellule? – gvalero87