首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何认识KVO的发件人?

如何认识KVO的发件人?
EN

Stack Overflow用户
提问于 2014-11-06 12:31:23
回答 1查看 262关注 0票数 1

当我使用KVO时,可以使用函数observeValueForKeyPath(.)的更改参数。才能知道价值。但是,当有多个按钮添加了观察者,我如何才能知道哪个按钮被更改?

例如,如下:

代码语言:javascript
复制
check1.addObserver(self, forKeyPath: "cell.state", 
    options: NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Old,
    context: nil)
check2.addObserver(self, forKeyPath: "cell.state", 
    options: NSKeyValueObservingOptions.New | NSKeyValueObservingOptions.Old,
    context: nil)

override func observeValueForKeyPath(keyPath: String, ofObject: AnyObject,
    change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void> {

    if keyPath == "cell.state" {
        // I can get the value as follow, but how to know thevalue which button of?
        if change[NSKeyValueChangeNewKey]?.boolValue == true {
            self.isChecked = true
        } else {
            self.IsChecked = false
        }
   }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-06 13:38:42

ofObject:参数是属性已被更改的对象。在Swift中,可以使用可选强制转换(as?)来验证对象是否具有适当的类型,然后将其与按钮进行比较:

代码语言:javascript
复制
if let button = ofObject as? NSButton {
    if button == check1 {
        // Checkbox 1 ...
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26779575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档