Cocoa多值布尔绑定,使用逻辑OR

时间:2017-04-10 19:45:24

标签: objective-c cocoa cocoa-bindings

所以我有一个视图,我希望隐藏取决于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

  

多值绑定

     

多值绑定允许为a创建多个绑定   单一绑定。使用第一个绑定创建绑定   自动导致第二个绑定被暴露,等等。

     

例如,如果绑定到已启用的绑定,则会调用绑定   enabled2被暴露。如果绑定enabled2,则对象将公开   enabled3,依此类推。然后将所有这些结合值一起使用   返回绑定的最终值。

     

多值绑定始终是只读的。

     

多值绑定有四种变体。

     

多值布尔绑定多值布尔绑定是   用于确定对象是否可编辑,隐藏或启用。该   通过形成逻辑AND导出结果的结果值   或暴露绑定的值的逻辑OR。合乎逻辑的   使用的操作取决于具体的绑定。

1 个答案:

答案 0 :(得分:3)

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

如@Willeke所述,隐藏绑定使用逻辑OR进行多值绑定。这是你想要的好事,因为,不,你不能改变它。 :)