我的观点超过15 UITextFields。我必须为所有设置bottomBorder(extension)UITextFields。我可以一一设置所有功能,UITextFields也可以正常工作。我想UITextFields一次设置所有的底部边框。这是我正在尝试的代码,但似乎for循环未执行。我什至尝试过,viewDidLayoutSubViews但是for循环也没有执行。
UITextFields
viewDidLayoutSubViews
override func viewDidLoad() { super.viewDidLoad() /** setting bottom border of textfield**/ for case let textField as UITextField in self.view.subviews { textField.setBottomBorder() } }
我让它工作了,但是仍然需要解释 为什么有问题的代码无法工作, 我是从论坛的某个地方获得的,不能完全相信答案。
/** extract all the textfield from view **/ func getTextfield(view: UIView) -> [UITextField] { var results = [UITextField]() for subview in view.subviews as [UIView] { if let textField = subview as? UITextField { results += [textField] } else { results += getTextfield(view: subview) } } return results
在viewDidLoad或viewDidLayoutSubviews中调用上述函数。
override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() /** setting bottom border to the textfield **/ let allTextField = getTextfield(view: self.view) for txtField in allTextField { txtField.setBottomBorder() } }