Swift:如何使用具有委托的属性观察者

时间:2015-01-22 06:26:22

标签: ios swift

我正在尝试使用委托和属性观察器来了解属性何时更改。我设置了协议,但我不确定如何使用属性观察器。

我有一个名为GridView的课程正在添加到DetailViewController。 GridView有一个名为rowValues的int数组。我想从DetailViewController观察rowValues。

GridView.swift

protocol gridViewDelegate {
    func rowValueChanged(value: [Int])
}

class GridView: UIView {

    var rowValues = [0,0,0,0,0]
    var delegate: gridViewDelegate?

    func updateRowValue() {
        rowValues[0] = 1
    }
}

DetailViewController.swift

class DetailViewController: UIViewController, gridViewDelegate {

      override func viewDidLoad() {
          super.viewDidLoad()

          var grid = GridView(frame: view.frame)
          grid.delegate = self
          view.addSubview(grid)
      }

      func rowValueChanged(value: [Int]) {
          println(value)
      }  
}

1 个答案:

答案 0 :(得分:3)

这可能是您正在寻找的语法:

class GridView: UIView {

    var rowValues: [Int] = [0,0,0,0,0] {
        didSet {
            if let theDelegate = self.delegate {
                theDelegate.rowValueChanged(rowValues)
            }
        }
    }
    var delegate: gridViewDelegate?

}