Skip to main content
 首页 » 操作系统

ios之Swift:如何通过委托(delegate)使用属性观察器

2024年01月01日45Leo_wl

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

我有一个名为 GridView 的类,它被添加到 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? 
 
}