【发布时间】:2015-10-30 05:01:01
【问题描述】:
我正在尝试使用 KVO 模式观察 UIButton 标题的变化。在 viewDidLoad 中添加了观察者。
@IBOutlet weak var KVOBTn: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
KVOBTn.titleLabel!.addObserver(self, forKeyPath: "btntest", options: NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Old , context: nil)
}
这是在标题有任何变化时监听的方法
override func observeValueForKeyPath(keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void>) {
if keyPath == "btntest"{
KVOBTn.backgroundColor = UIColor.greenColor()
}
}
我通过另一个按钮操作更改了按钮标题
@IBAction func changeTitle(sender: AnyObject) {
KVOBTn.setTitle("testAgain", forState: UIControlState.Normal)
}
问题是永远不会调用 observeValueForKeyPath 方法。我做错了什么?
【问题讨论】:
-
如果你能多解释一下
KVOBTn会更好。 -
KVOBTn 只是一个出口......
标签: ios uibutton key-value-observing