【发布时间】:2017-04-10 19:45:23
【问题描述】:
所以我有一个需要隐藏的视图,具体取决于 BOOL
我通过 Cocoa Bindings 做到这一点
[view bind:@"hidden" toObject:self withKeyPath:@"someBOOL" options:bindingOptions];
我现在的问题是我希望另一个 BOOL 也绑定到视图。
因此,如果这些 BOOL 中的任何一个返回 YES,我希望隐藏 view
[view bind:@"hidden" toObject:self withKeyPath:@"someBOOL2" options:bindingOptions];
问题在于,默认情况下,将两个 BOOL 绑定到同一个视图默认为逻辑 AND 操作,因此如果 someBOOL 或 someBOOL2 评估为 YES 并不重要另一个也不评估为YES
那么有没有人知道是否有办法让这些程序化布尔绑定使用逻辑 OR 运算符?
这是我能找到的唯一相关文档和信息: https://developer.apple.com/library/content/documentation/Cocoa/Reference/CocoaBindingsRef/Concepts/BindingTypes.html
多值绑定
多值绑定允许为一个对象创建多个绑定 单绑定。使用第一个绑定创建绑定 自动导致第二个绑定被公开,依此类推。
例如,如果您绑定到启用的绑定,一个名为 enabled2 已暴露。如果绑定 enabled2,对象将暴露 启用3,依此类推。然后将所有这些绑定值一起使用 在返回绑定的最终值。
多值绑定始终是只读的。
多值绑定有四种变体。
多值布尔绑定多值布尔绑定是 用于确定对象是否可编辑、隐藏或启用。这 绑定的结果值是通过形成逻辑 AND 得出的 或公开绑定的值的逻辑或。合乎逻辑的 使用的操作取决于具体的绑定。
【问题讨论】:
-
对于您展示的第二个绑定,您仍然使用名称“隐藏”。这替换第一个绑定。如果要使用多值绑定,第二个需要使用绑定名称“hidden2”。
-
啊,是的,它就在文档中说,没有仔细阅读。您知道是否可以在逻辑 AND/OR 之间切换?它说“使用的逻辑操作取决于特定的绑定。”这听起来像是我无法控制它
-
"如果对所有隐藏绑定的逻辑 OR 操作导致布尔值为 YES,则隐藏 NSView。" NSView hidden.
-
是的,这就是我要找的,谢谢!
标签: objective-c cocoa cocoa-bindings