2016-11-04 2 views
0

Ich habe diese Outlets ...Wie man die gleiche Methode an Steckdosen durchführt, die ähnliche Namen haben, anstatt 10s sehr ähnliche Linien zu schreiben?

@IBOutlet weak var pill1: UIImageView! 
@IBOutlet weak var pill2: UIImageView! 
@IBOutlet weak var pill3: UIImageView! 
@IBOutlet weak var pill4: UIImageView! 
@IBOutlet weak var pill5: UIImageView! 
@IBOutlet weak var pill6: UIImageView! 
@IBOutlet weak var pill7: UIImageView! 
@IBOutlet weak var pill8: UIImageView! 
@IBOutlet weak var pill9: UIImageView! 
@IBOutlet weak var pill10: UIImageView! 

Ich brauche alle von ihnen in der Funktion 'viewDidLoad' zu verstecken. Zum Beispiel ...

self.pill1.isHidden = true 
self.pill2.isHidden = true 
self.pill3.isHidden = true 
etc... 
etc....all the way to... 
self.pill10.isHidden = true 

Doch statt sich wiederholende Linien 10s Mal zu schreiben, die sehr ähnlich sind, wie verwende ich eine ‚for-Schleife‘ oder was auch immer nötig ist, um es sauberer zu machen.

Zum Beispiel

for index in 1...10 { 

    pill(insert index here somehow).isHidden = true 

} 

habe ich versucht, ein paar verschiedene Möglichkeiten, aber ich war immer Fehler mit String-Typ etc. Ich bin hier all dies. Jede Hilfe wird geschätzt. danke

+0

Verwenden Sie eine Steckdose Sammlung oder Arrays. – rmaddy

Antwort

0

Sie die Ansichten in ein Array so sagen kann:

for pill in [pill1, pill2, pill3, pill4, pill5, pill6, pill7, pill8, pill9, pill10] { 
    pill.isHidden = true 
} 

Sie könnte in Erwägung ziehen mit einem @IBOutlet Sammlung. In diesem Fall würden alle Ihre Ausgänge mit der gleichen Sammlungs- (Array-) Variable verbunden:

@IBOutlet var pills: [UIImageView]! 

for pill in pills { 
    pill.isHidden = true 
} 
+0

danke. Was ist mit dem Wort "Pille"? Das ist repetitiv. Gibt es nicht eine Möglichkeit, am Ende verschiedene Zahlen hinzuzufügen und die Pille in den geschweiften Klammern zu behalten? – koz

+0

wie loswerden der repetitiven Pille, die in den eckigen Klammern immer wieder geschrieben wird. – koz

+0

Die Namen innerhalb des Array-Literals '[]' müssen mit den Namen übereinstimmen, die in Ihren '@ IBOutlet's definiert sind. Sie können eine '@ IBOutlet'-Sammlung verwenden, die nur ein Array ist, das die Ausgänge enthält. Das funktioniert, wenn die Reihenfolge der Elemente im Array nicht wichtig ist. – vacawama

Verwandte Themen