Erstellen Sie eine for-Schleife, um einem Array 39 Schaltflächen hinzuzufügen

8

Ich habe 39 verschiedene UIButton-Variablen in meiner .h-Datei, aber ich möchte sie jedem Array hinzufügen, ohne das Gleiche 39 Mal eingeben zu müssen.

Gibt es eine Möglichkeit, dass ich das in einer for-Schleife machen könnte?

Die Buttons sind entsprechend benannt: btn1, btn2, btn3 etc.

    
max_ 13.04.2011, 22:28
quelle

5 Antworten

23

Sie können auf die 39 Schaltflächen in Ihrer Header-Datei verzichten und stattdessen ein einzelnes Array verwenden. Ich vermute, dass Sie manuelle Referenzen verwenden möchten, damit Sie den Interface Builder nutzen können, um Ereignisse und Layout zu steuern. Ich schlage vor, etwas anderes zu tun.

Erstellen Sie eine einzelne Eigenschaft - ein NSMutableArray . Wenn die Ansicht geladen wird, erstellen Sie die Schaltflächen im laufenden Betrieb.

Um auf eine Schaltfläche zuzugreifen, verwenden Sie etwas wie [self.arrayOfButtons objectAtIndex:38]; . (Im Falle von 39 Tasten würde das die letzte Taste zurückgeben.); '

Um eine Schaltfläche zu erstellen, verwenden Sie Folgendes:

%Vor%

Beachten Sie, dass Sie den Rahmen der init -Methode Ihrer Schaltfläche übergeben. Der Rahmen Ihrer Schaltfläche wird in der oberen linken Ecke des Containers beginnen und Ihre Schaltfläche wird 100 Pixel im Quadrat sein. Der Rahmen ist eine Instanz von CGRect . (Sie erstellen ein CGRect , indem Sie die Funktion CGRectMake(x,y,width,height) aufrufen.

Um 39 Schaltflächen zu erstellen, möchten Sie möglicherweise wie folgt vorgehen, wenn Sie ein Array für die Schaltflächen myButtons und vordefinierte numberOfButtons und Dimensionsvariablen verwenden:

%Vor%

Natürlich müssen Sie für jede Schaltfläche eindeutige Werte für x , y , width und height festlegen oder sie werden sich alle überlappen. Sobald Sie Ihre Schaltflächen erstellt haben, können Sie mit ihnen etwas tun, z. B. die Beschriftung festlegen oder sie auf dem Bildschirm anzeigen. Um sie auf dem Bildschirm anzuzeigen, können Sie Folgendes tun:

%Vor%

Natürlich ist es einfach nutzlos, dem Bildschirm nur Schaltflächen hinzuzufügen. Sie müssen in der Lage sein, sie dazu zu bringen, etwas zu tun. Um eine Aktion zu einer Schaltfläche hinzuzufügen, können Sie Folgendes verwenden:

%Vor%

Der erste Teil, addTarget:self , besagt, dass dieser View-Controller das Ereignis behandelt, das Sie von ihm anfordern möchten. action:@selector(someMethod:) teilt der Klasse mit, welche Methode beim Auftreten des Ereignisses ausgeführt werden soll. Dann sagt forControlEvents:UIControlEventTouchDown , dass die Klasse die genannte Methode ausführen soll, wenn die Schaltfläche angetippt wird.

Also, in Ihrer Kopfzeile:

%Vor%

In Ihrer Implementierung können Sie Folgendes verwenden:

%Vor%

Jetzt können Sie zum Button Paradise gehen, ohne den Interface Builder im Flugzeug zu benutzen. Geht UIButton glücklich!

    
Moshe 13.04.2011, 23:14
quelle
9

Wie so:

%Vor%     
Jacob Relkin 13.04.2011 22:33
quelle
4
%Vor%

Bearbeiten: Nachdem Sie Ihre Frage erneut gelesen haben, ist dies möglicherweise nicht das, was Sie fragen. Ich dachte, du wolltest eine Menge Instanzen ähnlicher Klassen erstellen.

    
Ben Scheirman 13.04.2011 22:34
quelle
3

Sie können eine Getter-Methode erstellen, die nach jeder Schaltfläche benannt ist und dann [self ValueForKey:] aufrufen; für jeden aber etwas schreit hier einfach "schreckliches design":)

    
Zaky German 13.04.2011 22:34
quelle
2

Key Value-Programmierung ist Ihr Freund

Grundsätzlich können Sie Ihre Buttons umschlingen und erstellen, und solange Sie Eigenschaften für Ihre Buttons definiert haben, können Sie.

%Vor%

Dabei steht button1 für die gleiche Zeichenfolge wie Ihr Variablenname.

    
Devraj 13.04.2011 22:33
quelle