【问题标题】:Cocoa Bindings and Checking for String contentCocoa 绑定和检查字符串内容
【发布时间】:2013-08-16 06:47:32
【问题描述】:

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

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

现在,转折点来了:

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

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

【问题讨论】:

    标签: objective-c cocoa swift binding


    【解决方案1】:

    嗯,这基本上是this question 的复制品,我是answered。但是除了提问者之外,有人悬赏了这个,所以:

    完全在 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。
    【解决方案2】:

    你的意思是这样的?

    string1=string2 ? hidden=true : hidden=false
    

    【讨论】:

    • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
    • 好吧,我认为那是他想要的……无论如何,对不起,我是新来的,感谢@Igor 的解释
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多