以编程方式将视图分配给变量

时间:2015-10-05 07:47:11

标签: ios swift uiview uiviewcontroller

我有一个类,我需要在其中获取对UIViewController的一个子视图的引用,例如我需要从一个swift类更改每个UIViewController中的文本。

所以这是我的班级:

class CustomClass: UIViewController {

   var button: UIView!

   func initClass(controller: UIViewController){
      button = controller.view.getViewByIdentifier("button")
   }

   func changeButtonText(){
      button.text = "changed!"
   }

}

通过此调用,我可以在每个UIViewController中初始化它,并仅使用一种方法更改文本。

但是如何在每个视图中获得对按钮的引用?

1 个答案:

答案 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)
        }
    }