:
würde
@interface Controller : NSObject {
UIButton *_replyToSender;
UIButton *_replyToAll;
}
- (void)buttonClicked:(id)sender;
@end
@implementation Controller
- (void)buttonClicked:(id)sender {
if (sender == _replyToSender) {
// reply to sender...
} else if (sender == _replyToAll) {
// reply to all...
}
}
@end
Die zweite Möglichkeit, in einer Art und Weise, wie implementiert wird:
Die erste (meine bevorzugte Art und Weise, aber es ist leicht, das Gegenteil zu behaupten) würde wie so umgesetzt werden
Die Methode replyAll sollte den (ID-) Absender akzeptieren. Wenn ein UIButton das Ereignis ausgelöst hat, wird dasselbe UIButton als Absender übergeben. UIButton verfügt über eine Eigenschaft "tag", an die Sie Ihre eigenen benutzerdefinierten Daten anhängen können (ähnlich wie bei .net winforms).
So sollten Sie Ihre Veranstaltung hook up mit:
[replyAllBtn addTarget:self.target action:@selector(ReplyAll:) forControlEvents:UIControlEventTouchUpInside];
replyAllBtn.tag=15;
handhaben es dann mit:
(void) ReplyAll:(id)sender{
NSInteger *tid = ((UIControl*)sender).tag;
//...
hey danke das ist genau was ich wollte ...... Hinzufügen des Tags funktioniert gut, aber in der Controller, wo die Funktion replyAll definiert ist { NSInteger * tid = (* NSInteger) sender.tag; } gibt eine Fehlermeldung, „Anfrage für Mitglied-Tag in etwas keine Struktur oder Union“ :( – Vijayeta
Danke für diese Aufklärung, Rob. Ich habe versucht, genau herauszufinden, wie ich das gleiche Verhalten zu erreichen, würde Vijayeta suchte: @Vijayeta: Der Absender ist der Button selbst, also glaube ich, dass du "((UIControl *) sender) .tag;" ausprobieren musst. Beachte, dass du das Darstellungsobjekt in runde Klammern setzen musst, bevor du auf den Link zugreifen kannst Tag-Eigenschaft – LucasTizma
@Vijayeta:.. '.tag' eine ganze Zahl ist, nicht ein Zeiger auf eine ganze Zahl' NSInteget tid = sender.tag' – user102008