所以我有一个视图,我希望隐藏取决于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
多值绑定
多值绑定允许为a创建多个绑定 单一绑定。使用第一个绑定创建绑定 自动导致第二个绑定被暴露,等等。
例如,如果绑定到已启用的绑定,则会调用绑定 enabled2被暴露。如果绑定enabled2,则对象将公开 enabled3,依此类推。然后将所有这些结合值一起使用 返回绑定的最终值。
多值绑定始终是只读的。
多值绑定有四种变体。
多值布尔绑定多值布尔绑定是 用于确定对象是否可编辑,隐藏或启用。该 通过形成逻辑AND导出结果的结果值 或暴露绑定的值的逻辑OR。合乎逻辑的 使用的操作取决于具体的绑定。
答案 0 :(得分:3)
对于您显示的第二个绑定,您仍然使用“隐藏”这个名称。这取代了第一个绑定。如果要使用多值绑定,则第二个需要使用绑定名称“hidden2”。
如@Willeke所述,隐藏绑定使用逻辑OR进行多值绑定。这是你想要的好事,因为,不,你不能改变它。 :)