2010-12-27 14 views
0

Wenn ich eine zufällige Ganzzahl z. randomInt und möchte eine erstellte Schaltfläche aufrufen, z. UIButton * button1, button2, button3 usw.Verwenden einer zufälligen Ganzzahl zum Aufrufen eines Objekts

Kann ich den Knopf nennen als

NSString *buttonNumber = [NSString stringWithFormat:@"button%d", randomInt]; 

[buttonNumber setImage:[UIImage imageNamed:@"someImage.png"] forState:UIControlStateNormal]; 

folgt Ich habe eine Menge von diesen, und es wäre dramatisch Codemenge zu verringern.

Dank

Antwort

0

Wenn Sie die Taste zuweisen einen Tag die Schaltfläche wie

button.tag = number 

erstellen Sie die Taste später Da diese mit

[[parentview viewWithTag:randomInt] setimage:...] 
0

Wenn die UIButton s Eigenschaften Ihres self Objekt sind, können Sie es wie folgt tun:

[[self valueForKey:buttonNumber] setImage:...] 
2

dann Tasten in einem NS (Mutable) Array Store erstellen sie dann Zugriff mit :

UIButton* button = [buttonArray objectAtIndex:randomInt]; 
+0

+1 bekommen ist ein vernünftiger Ansatz, der das gebrochene Design behebt. – Eiko

+0

Erzeugt das nicht die doppelte Anzahl von Tasten? Wenn ich alle meine Schaltflächen deklariere, dann füge sie zu einem Array hinzu. Um später darauf zugreifen zu können, erstelle ich sicher keine neue Schaltfläche? – jarryd

+1

Sie erhalten nur die Referenz aus dem Array zurück und erstellen kein neues Objekt. Aber in diesem Fall können Sie einfach mit Tags arbeiten. Sie sind für solche Sachen da. Wenn Sie ein Array verwenden möchten, müssen Sie es irgendwo speichern und sicherstellen, dass es richtig aufgeräumt ist. Vielleicht fügen Sie das Array in der Elternansicht hinzu. Sie müssen also uiview dafür ableiten. Mit Tags benötigen Sie keine zusätzliche Variable. – Bastian

0

Es ist besser, die Tags mit der Taste zu verwenden. Es wird Ihnen sehr helfen und es wird den Code reduzieren, den Sie gerade verwenden.

-Happy iCODING ...

Verwandte Themen