我之前没有使用Cocoa绑定很多,所以在这里我需要一些帮助。
我有一个带有三个按钮和一个复选框的单选按钮组(NSMatrix)。
我希望仅在选择最后一个单选按钮时才启用复选框。
在线找到了一个教程,建议将单选按钮组的选定标签属性绑定到复选框的enabled属性。最后一个单选按钮的标签必须为1,其他单选按钮的标签应为0。
这很好。
问题是,如果选中该复选框并且更改了单选按钮选择,则即使未启用该复选框,它也会保持选中状态。我希望当该框更改为禁用状态时,不要选中该框。
任何建议将不胜感激!
提前致谢!
任何没有任何代码的方法来实现这一目标?
最佳答案
我怀疑没有代码就可以做到这一点。
我在模型中使用KVO处理此问题。代码看起来像这样:
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if ([@"checkWithInProcess" isEqualToString:keyPath]) {
NSNumber *oldValue = [change objectForKey:NSKeyValueChangeOldKey];
NSNumber *newValue = [change objectForKey:NSKeyValueChangeNewKey];
BOOL oldValueAsBool = (oldValue != (id)[NSNull null]) && oldValue.boolValue;
BOOL newValueAsBool = (newValue != (id)[NSNull null]) && newValue.boolValue;
if (oldValueAsBool && !newValueAsBool) {
// Save the value
savedRecordValueWithInProcess = self.recordValueWithInProcess;
self.recordValueWithInProcess = nil;
} else if (!oldValueAsBool && newValueAsBool) {
// Restore the value or set it to the default
if (savedRecordValueWithInProcess)
self.recordValueWithInProcess = savedRecordValueWithInProcess;
else
self.recordValueWithInProcess = [NSNumber numberWithBool:NO];
savedRecordValueWithInProcess = nil;
}
}
}
并在初始化期间:
[self addObserver:self
forKeyPath:@"checkWithInProcess"
options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew
context:[Characteristic class]];
关于xcode - 将选定的单选框绑定(bind)到 cocoa 中的启用复选框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9349896/