Swift - IBOutletCollection equivalent Swift - IBOutletCollection equivalent swift swift

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