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?
}
我正在尝试同时使用委托和 属性 观察器来了解 属性 何时更改。我设置了协议,但我不确定如何使用 属性 观察者。
我有一个名为 GridView
的 class 正在添加到 DetailViewController
。 GridView 有一个称为 rowValues 的整数数组。我想观察来自 DetailViewController
.
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?
}