3

好的,这就是我想要做的:

  • 假设我有一个项目,例如NSTextField
  • 假设我们想将它的hidden值绑定到一个BOOL变量——这很容易。

现在,这里的转折:

  • 我想以( )hidden的方式将该属性绑定到支票someStringVariable == "Some String"
  • 简而言之:当someStringVariable等于某个字符串时,将元素设置为隐藏。

我如何在 IB 中做到这一点?可行吗?

4

2 回答 2

2

好吧,这基本上是我回答的这个问题的重复。但是除了提问者之外,还有其他人悬赏了这个,所以:

完全在 IB 内?不。

您可以绑定到字符串类型的属性,然后使用自定义值转换器根据其与所需值的相等性将该字符串转换为布尔值。

但是,将属性添加到具有字符串类型属性的类可能更容易:

// Assumed to exist:
@property (copy) NSString* someStringProperty;

+ (NSSet*) keyPathsForValuesAffectingShouldBeHidden
{
    return [NSSet setWithObject:@"someStringProperty"];
}
- (BOOL) shouldBeHidden
{
    return [self.someStringProperty isEqualToString:@"desired string"];
}

由于此属性实际上是 UI 而不是模型的一部分,因此您可能希望在模型类的类别中定义它。类别本身将在控制器代码中声明和定义。

定义后,您可以绑定到该shouldBeHidden属性。

于 2015-01-21T08:12:22.693 回答
0

你的意思是这样的?

string1=string2 ? hidden=true : hidden=false
于 2015-01-21T03:14:42.837 回答