Kun*_*mar 10 textfield ios swift
我有一个超过15的观点UITextFields.我必须为所有人设置bottomBorder(扩展名)UITextFields.我可以为所有人UITextFields和它的工作一个接一个地设置它.我想UITextFields一次为所有人设置底部边框.这是我正在尝试的代码,但似乎for循环没有执行.我甚至尝试过,viewDidLayoutSubViews但是循环也不在那里执行.
override func viewDidLoad()
{
super.viewDidLoad()
/** setting bottom border of textfield**/
for case let textField as UITextField in self.view.subviews {
textField.setBottomBorder()
}
}
Run Code Online (Sandbox Code Playgroud)
Gur*_*ngh 14
Swift:此函数将返回视图中的所有文本字段.无论任何子视图中是否存在字段.;-)
func getAllTextFields(fromView view: UIView)-> [UITextField] {
return view.subviews.flatMap { (view) -> [UITextField]? in
if view is UITextField {
return [(view as! UITextField)]
} else {
return getAllTextFields(fromView: view)
}
}.flatMap({$0})
}
Run Code Online (Sandbox Code Playgroud)
用法:
_=getAllTextFields(fromView : self.view).map{($0.text = "Hey dude!")}
Run Code Online (Sandbox Code Playgroud)
我让它工作,但仍然需要解释为什么有问题的代码不起作用
我从论坛的某个地方得到它,而不是完全能够归功于答案.
/** 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
Run Code Online (Sandbox Code Playgroud)
在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()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5455 次 |
| 最近记录: |