如何使用 Swift 循环访问 UIViewController 中的视图插座?
How to loop through view outlets in a UIViewController with Swift?
我想知道,是否可以使用 Swift 遍历 UIViewController
的所有插座。
具体来说,我想检查是否每个文本字段都由用户填写。
我认为您必须手动执行此操作,或者将它们添加到数组并遍历该数组,或者您可以遍历视图的所有子视图并检查它是否是文本字段。
for view in self.view.subviews as [UIView] {
if let textField = view as? UITextField {
if textField.text == "" {
// textfield is empty
return
}
}
}
这就是 Outlet Collections 的用途。将所有文本字段拖到 InterfaceBuilder 中的同一个 Outlet 集合中,并在 class 文件中为该集合创建一个 @IBOutlet
:
要在 InterfaceBuilder 中创建插座集合,按住 Ctrl 键并从第一个 UITextField
拖动到助理编辑器中的 class 文件。然后选择Outlet Collection:
按住 Ctrl 并拖动下一个 UITextField
到那个 @IBOutlet
以将其添加到集合中:
对所有文本字段重复该操作。
@IBOutlet var textFields: [UITextField]!
func checkTextFields() {
for textField in self.textFields {
... // do your checks
}
}
我想知道,是否可以使用 Swift 遍历 UIViewController
的所有插座。
具体来说,我想检查是否每个文本字段都由用户填写。
我认为您必须手动执行此操作,或者将它们添加到数组并遍历该数组,或者您可以遍历视图的所有子视图并检查它是否是文本字段。
for view in self.view.subviews as [UIView] {
if let textField = view as? UITextField {
if textField.text == "" {
// textfield is empty
return
}
}
}
这就是 Outlet Collections 的用途。将所有文本字段拖到 InterfaceBuilder 中的同一个 Outlet 集合中,并在 class 文件中为该集合创建一个 @IBOutlet
:
要在 InterfaceBuilder 中创建插座集合,按住 Ctrl 键并从第一个 UITextField
拖动到助理编辑器中的 class 文件。然后选择Outlet Collection:
按住 Ctrl 并拖动下一个 UITextField
到那个 @IBOutlet
以将其添加到集合中:
对所有文本字段重复该操作。
@IBOutlet var textFields: [UITextField]!
func checkTextFields() {
for textField in self.textFields {
... // do your checks
}
}