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

Swift: How to use property observers with delegation

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

我有一个名为 GridView 的 class 正在添加到 DetailViewController。 GridView 有一个称为 rowValues 的整数数组。我想观察来自 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)
      }  
}

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

class GridView: UIView {

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

}