我试图观察复选框状态,并在复选框状态更改时在应用程序中进行适当的更改。在使用复选框管理窗口的窗口管理器中,我有以下观察者设置:
- (void)awakeFromNib
{
[myCheckBox addObserver:self
forKeyPath:@"state"
options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld)
context:NULL];
}
- (void)dealloc
{
[myCheckBox removeObserver:self forKeyPath:@"state"];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"KeyPath: %@", keyPath);
NSLog(@"ofObject: %@", object);
NSLog(@"change: %@", change);
}
我还将 myCheckBox 连接到文件所有者(即窗口控制器)到窗口中相应的复选框。但是当我运行我的应用程序时observeValueForKeyPath:ofObject:change:context:
方法从未被调用。
我究竟做错了什么?
In -awakeFromNib
检查一下myCheckbox
不为零。如果它为零,那么它在 IB 中连接不正确。
Edit: NSButton.state
具有相同的值NSButton.cell!.state
,但它不是键值可观察的。为了能够观察该值,您需要使用\.cell!.state
关键路径。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)