/ / Viele UIButton in .xib mit verschiedenen Tags - ios, uibutton

Viele UIButton in .xib mit verschiedenen Tags - ios, uibutton

Ich habe 17 Knöpfe in meinem Xib. Und ich habe ihnen Tag-Werte von 1 bis 17 gesetzt.

Kann mir jemand sagen, wie man alle 17 Buttons mit einem einzigen Variablennamen in .h verbindet und einen bestimmten Button in .m mit seinem Tag-Wert erhält.

Vielen Dank

Antworten:

1 für die Antwort № 1

Ich habe das gerade getestet, und ich weiß es, wenn Sie auswählenalle Ihre Schaltflächen in Storyboards und ziehen Sie sie in den entsprechenden Controller. In einem Assistenten-Editor können Sie eine Sammlung von Ausgängen erstellen, die alle Schaltflächen darstellen. Der resultierende Code war:

@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttons;

1 für die Antwort № 2

Nein, das ist nach meiner Erfahrung nicht möglich. IBOutlet, d. H. Interface Builder Outlet, bezieht sich immer auf eine einzelne Verbindung zwischen einer Schnittstellenkomponente (wie Schaltfläche) und einer Variablen in der Schnittstelle (wie IBOutlet UIButton * myButton). Diese Eins-zu-Eins-Beziehung.


1 für die Antwort № 3

Es muss ein sein IBOutlet Sie müssen also alle 17 Schaltflächen erstellen. Verbinden Sie die Schaltflächen einzeln mit den Ausgängen, und Sie können sie dann in einem Array in Ihrem Initializer ablegen, wenn Sie sie in einem Array benötigen.

Sie können auf dem sparen IBAction Methoden, obwohl: eine Methode so machen

-(IBAction)buttonClicked:(id)sender {
}

Sie können diese Methode mit allen Schaltflächen verbinden und das Tag des anzeigen (id)sender um zu entscheiden, welche Schaltfläche Ihre Aktion aufgerufen hat.


0 für die Antwort № 4

Sie können der 17-Taste keine Referenz zuweisen, aber Sie können 17 Tasten eine Methode zuweisen, wie @dasblinkenlight

Sie müssen nur das einstellen IBAction Methode zu allen angeklickten Ereignissen Über den Tag-Wert können Sie auf die gewünschte Schaltfläche zugreifen

-(IBAction)buttonClicked:(id)sender {

int j = [sender tag];
NSLog(@"Clicked Button %i", j);

}