【问题标题】:Cocoa Multiple-Value Boolean Bindings, Using Logical ORCocoa 多值布尔绑定,使用逻辑或
【发布时间】: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 操作,因此如果 someBOOLsomeBOOL2 评估为 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


【解决方案1】:

对于您展示的第二个绑定,您仍然使用名称“隐藏”。这取代了第一个绑定。如果要使用多值绑定,第二个需要使用绑定名称“hidden2”。

正如@Willeke 所指出的,隐藏绑定对多值绑定使用逻辑或。好东西就是你想要的,因为,不,你无法改变它。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-09
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    相关资源
    最近更新 更多