好的,这是我想做的:
- 假设我有一个项目,例如
NSTextField
- 我们还想将其
hidden
值绑定到一个BOOL
变量 - 这很容易。
现在,这里有个转折:
- 我想以 (
someStringVariable == "Some String"
) 的方式绑定hidden
属性 - 简单来说:当
someStringVariable
等于某个字符串时,将元素设置为隐藏。
我如何在 IB 中实现这一点?这可行吗?
好的,这是我想做的:
NSTextField
hidden
值绑定到一个 BOOL
变量 - 这很容易。现在,这里有个转折:
someStringVariable == "Some String"
) 的方式绑定 hidden
属性someStringVariable
等于某个字符串时,将元素设置为隐藏。我如何在 IB 中实现这一点?这可行吗?
完全在IB内部?不行。
您可以绑定到一个字符串类型的属性,然后使用自定义值转换器将该字符串转换为布尔值,根据其与期望值的相等性进行转换。
但是,可能更容易的方法是向具有字符串类型属性的类添加一个属性:
// Assumed to exist:
@property (copy) NSString* someStringProperty;
+ (NSSet*) keyPathsForValuesAffectingShouldBeHidden
{
return [NSSet setWithObject:@"someStringProperty"];
}
- (BOOL) shouldBeHidden
{
return [self.someStringProperty isEqualToString:@"desired string"];
}
由于这个属性实际上是 UI 的一部分而不是模型,因此您可能希望在模型类的分类中定义它。该分类本身将在控制器代码中声明和定义。
定义完毕后,您可以绑定到 shouldBeHidden
属性。
string1=string2 ? hidden=true : hidden=false