Cocoa绑定和检查字符串内容

时间:2013-08-16 06:47:32

标签: objective-c cocoa swift binding

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

  • 假设我有一个项目,例如NSTextField
  • 我们还要说我们要将hidden值绑定到BOOL变量 - 这很容易。

现在,这是扭曲:

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

我如何从IB内部做到这一点?它可行吗?

2 个答案:

答案 0 :(得分:2)

嗯,这基本上是我this questionanswered的副本。但是除了提问者以外的其他人已经给了这个奖励,所以:

完全在IB内?否。

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

但是,将属性添加到具有string-typed属性的类可能更容易:

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

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

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

一旦定义,您就可以绑定到shouldBeHidden属性。

答案 1 :(得分:0)

你的意思是这样的吗?

string1=string2 ? hidden=true : hidden=false