How to loop through Outlets of a UIViewController

2019-01-19 23:02发布

I'm wondering, if it's possible to loop through all outlets of a UIViewController with swift.

Specificly, I want to check if every textfield is filled by the user.

2条回答
三岁会撩人
2楼-- · 2019-01-19 23:14

I think you have to manually do it, or add them to array and loop through that array or you can loop through all subviews of your view and check if it's textfield.

for view in self.view.subviews as [UIView] {
    if let textField = view as? UITextField {
        if textField.text == "" {
            // textfield is empty
            return
        }
    }
}
查看更多
太酷不给撩
3楼-- · 2019-01-19 23:27

This is what Outlet Collections are for. Drag all your textfields in the same Outlet Collection in InterfaceBuilder and create an @IBOutlet to that collection in your class file:

To create the outlet collection in InterfaceBuilder, ctrl-drag from the first UITextField to your class file in the assistant editor. Then choose Outlet Collection:

enter image description here

ctrl-drag the next UITextField on that @IBOutlet to add it to the collection:

enter image description here

Repeat that for all your textFields.

@IBOutlet var textFields: [UITextField]!

func checkTextFields() {
    for textField in self.textFields {
        ... // do your checks
    }
}
查看更多
登录 后发表回答