Swift - IBOutletCollection equivalent
Update: This works properly in Xcode now - "Outlet Collection" is one of the connection options in Interface Builder, which creates something that looks like:
@IBOutlet var labelCollection: [UILabel]!
While we're waiting for a fix, you can approximate this using a computed property. Let's say my view has five UILabels
that I want in a collection. I still have to declare each one, but then I also declare a computed property that collects them:
class MyViewController { @IBOutlet var label1 : UILabel @IBOutlet var label2 : UILabel @IBOutlet var label3 : UILabel @IBOutlet var label4 : UILabel @IBOutlet var label5 : UILabel var labels: UILabel![] { return [label1, label2, label3, label4, label5] }
Kind of annoying, but from then on we can treat the labels
property as if it were an IBOutletCollection
, and won't have to change the rest of our code once the bug is fixed:
override func viewDidLoad() { super.viewDidLoad() for (index, item) in enumerate(self.labels) { item.text = "Label #\(index)" }}
Use:
@IBOutlet var lineFields: [UITextField]!
Then control-drag from UITextField elements to lineFields
in order.
@IBOutlet var buttons : [UIView]!
then drag it from the connections inspector in the interface builder or whatever metod you usually use for that