我有一个类,我需要在其中获取对UIViewController的一个子视图的引用,例如我需要从一个swift类更改每个UIViewController中的文本。
所以这是我的班级:
class CustomClass: UIViewController {
var button: UIView!
func initClass(controller: UIViewController){
button = controller.view.getViewByIdentifier("button")
}
func changeButtonText(){
button.text = "changed!"
}
}
通过此调用,我可以在每个UIViewController中初始化它,并仅使用一种方法更改文本。
但是如何在每个视图中获得对按钮的引用?
答案 0 :(得分:1)
枚举视图中的所有按钮并更改其标题。功能强大的方式:
self.view.subviews.flatMap { (view) -> UIButton? in
return view as? UIButton
}.forEach { (button) -> () in
button.setTitle("changed!", forState: .Normal)
}
小解释:flatMap
映射子视图数组,仅返回UIButton
s,其中包含解包的选项。然后只为每个人设置标题。
Swift 1.2(未经检查):
self.view.subviews.map { (view) -> Void in
if let button = view as? UIButton {
button.setTitle("changed!", forState: .Normal)
}
}