gpt4 book ai didi

xcode - 将选定的单选框绑定(bind)到 Cocoa 中的启用复选框

转载 作者:行者123 更新时间:2023-12-03 16:43:35 25 4
gpt4 key购买 nike

我以前没有经常使用 Cocoa 绑定(bind),所以我需要一些帮助。

我有一个单选按钮组 ( NSMatrix ),其中包含三个按钮和一个复选框。我希望仅在选择最后一个单选按钮时启用该复选框。

网上找到一个教程,建议将单选按钮组的选定标签属性绑定(bind)到复选框的启用属性。最后一个单选按钮的标签需要为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com