KVO 无法与 UISwitch 一起使用
在我的一生中,我无法让 KVO 与 UISwitch 一起工作。我有一个自定义 UITableViewCell,其中通过 Interface Builder 添加了 UISwitch。我为 UISwitch 创建了一个 IBOutlet 并将其链接到 theSwitch
变量。
- (id)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if (self) {
[theSwitch addObserver:self forKeyPath:@"on" options:NSKeyValueObservingOptionNew context:NULL];
}
return self;
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSLog(@"toggled switch");
}
watchValueForKeyPath:ofObject:change:context 永远不会被调用!
For the life of me I can't get KVO working with UISwitch. I have a custom UITableViewCell with a UISwitch added through Interface Builder. I created an IBOutlet for the UISwitch and linked it to theSwitch
variable.
- (id)initWithCoder:(NSCoder *)coder {
self = [super initWithCoder:coder];
if (self) {
[theSwitch addObserver:self forKeyPath:@"on" options:NSKeyValueObservingOptionNew context:NULL];
}
return self;
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSLog(@"toggled switch");
}
observeValueForKeyPath:ofObject:change:context is never called!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不确定,但 UISwitch 可能根本不符合 KVO 标准。
没关系,因为你可以只使用控制事件:
I'm not sure, but it's possible that UISwitch simply isn't KVO-compliant.
No matter, because you can just use control events:
添加观察者时 theSwitch 可能尚未初始化。尝试在 awakeFromNib 中添加观察者。
theSwitch might not have been initialized when you add the observer. try adding the observer in awakeFromNib.