2010-11-24 10 views
0

Ist es möglich, einen variablen Ausgangsnamen zu haben ?. Zum Beispiel haben Sie 10 Etiketten (vielleicht Sitze im Bus). jede hat einen Ausgang, Sitz1, Sitz2 usw. Ist es möglich, eine For-Schleife zu haben, die @ "Sitz" mit der Inkrement-Integer verkettet. Damit kann ich auf seat1, seat2 outlet zugreifen, ohne es einzeln angeben zu müssen. Das funktioniert nicht, aber es macht ein bisschen klarer, was ich zu erreichen versuche.Variabler IBOutlet-Name?

int i; 
for (i = 0; i < [seatarray count]; i++) 
{ 
    [@”seat” stringByAppendingString[ i stringValue]] = @””; 
} 

Antwort

0

Es könnte einfacher sein, das Array selbst beim Laden einfach zu erstellen:

self.seatarray = [NSArray arrayWithObjects:seat1, seat2, ..., seatN, nil]; 
6

Ab iOS4 Sie IBOutletCollection verwenden können, die mehrere Instanzen an einen einzigen Ausgang angeschlossen werden können, die eine Reihe von Objekten darstellen , z.B IBOutletCollection die UILabels speichern kann nur:

@property (nonatomic, retain) IBOutletCollection(UILabel) NSArray *seats; 
+1

Beachten Sie jedoch, dass, obwohl IBOutletCollection ein dauert NSArray, die Reihenfolge der Inhalte ist nicht spezifiziert, und ist nicht immer die Reihenfolge, in der sie in IB angeschlossen waren. Es ist bedauerlich, denn dies wäre ein großartiger Ort, um sie zu benutzen. –

+0

Ungeordnet, Sie können jedoch immer UIView-Tags verwenden und das Array sortieren, um bestimmte Elemente zu erhalten. –

+1

Ich konnte diese Einschränkung umgehen, indem ich einfach den Getter überschrieb und ein sortiertes Array basierend auf Tags zurückgab. –

0

Sie sollten in der Lage sein, das zu tun, mit Schlüssel-Wert-Codierung, so etwas wie (ungetestet Code)
for (int i = 0; i != 10; ++i) { [self setValue:@"foo" forKey:[@"seat" stringByAppendingFormat:@"%d", i]]; }