Wie gehe ich vor, wenn ich programmatisch eine Reihe von Schaltflächen generieren und diese dann IBActions zuordnen möchte? Es ist einfach, wenn ich die Schaltflächen in Interface Builder hinzufüge, aber das kann ich für diesen Fall nicht tun.Programmgesteuertes Erstellen von UIB-Schaltflächen und deren Verknüpfung mit IBAction
16
A
Antwort
31
Die Schaltflächen haben die Methode - (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents
.
Der Code, dies verwenden würde wie folgt aussehen:
UIButton *myButton = [[UIButton alloc] init...];
[myButton addTarget:something action:@selector(myAction) forControlEvents:UIControlEventTouchUpInside];
Dies setzt voraus, dass Ihr IBAction myAction
benannt ist und dass something
ist die Steuerung, für die diese Aktion definiert ist.
6
Erstellen Sie zunächst die Taste:
UIButton * btn;
btn = [ [ UIButton alloc ] initWithFrame: CGRectMake(0, 0, 200, 50) ];
fügt dann eine Aktion:
[ btn addTarget: self action: @selector(myMethod) forControlEvents: UIControlEventTouchDown ];
Dann fügt die Schaltfläche, um einen Blick:
[ someView addSubView: btn ];
[ btn release ];
Wenn Sie einen Selektor für einen UIButton angeben, müssen Sie eine Methode mit einem einzigen Argument benennen, die ausgewählte Schaltfläche id? Was würde passieren, wenn ich eine Methode ohne Argumente angeben würde? – mmccomb
Großartig, danke! Ich werde es versuchen, aber das sieht nach dem aus, was ich suche. – Nicsoft
@mattmccomb: Aus der Dokumentation: "Die Aktionsnachricht kann optional den Sender und das Ereignis als Parameter in dieser Reihenfolge enthalten." Sie können eine Methode mit null, ein oder zwei Argumenten als Aktion haben. Vergessen Sie aber nicht, am Ende des Aktionsnamens für jedes Argument den folgenden Code hinzuzufügen: – mrueg