可可绑定和检查字符串内容

3

好的,这是我想做的:

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

现在,这里有个转折:

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

我如何在 IB 中实现这一点?这可行吗?

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 属性。


我认为这应该是被接受的答案。另一个方法是使用KVO。 - Ozgur Vatansever

0
你是指像这样的东西吗?
string1=string2 ? hidden=true : hidden=false

这并没有回答问题。如果您想评论或请求作者澄清,请在他们的帖子下留言。 - Igor Borisenko
好吧,我以为那就是他想要的...不管怎样,对不起,我是新来的,谢谢@Igor的解释。 - pablopunk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接