【问题标题】:How can I write cocoa bindings as code instead of in the Interface Builder?如何将可可绑定编写为代码而不是在 Interface Builder 中?
【发布时间】:2010-06-02 21:36:35
【问题描述】:

在我的模型中,我得到了一个NSMutableArray,它可以跟踪不断变化的元素数量。 在我看来,我得到了一个 NSTextField,它显示了元素的数量。
视图从 nib 文件中取消归档并分配/初始化模型。因此,它知道模型和包含的数组。

我建立了如下连接。在文本字段的 Interface Builder 中,我添加了一个 Cocoa Binding “路径”,如下所示:myModell.myArray.@count。通过这个我可以访问count 属性(这是必须的,因为数组本身不会改变)。
绑定基于键值合规性,我在模型中建立了它,因此可以访问数组。但关键值合规性不是问题的一部分。

我的问题:我怎样才能将绑定放入源代码而不是将其写入Interface Builder

【问题讨论】:

    标签: cocoa interface-builder cocoa-bindings key-value-observing key-value-coding


    【解决方案1】:

    使用NSKeyValueBindingCreation protocol。你发送类似[someObject bind:@"value" toObject:myModel withKeyPath:@"myArray.@count" options:nil]的东西。

    【讨论】:

    • 我已经试过了。如果我想更新 myTextField,你会提到 someObject 和“值”吗?我测试了以下内容: [self bind:@"myTextField" ...] [self bind:@"myTextField.@value" ...] [myTextField bind:@"value" ...] 虽然以上都不起作用.
    • Nooooo,这显然取决于您要将代码放在哪里,但假设它在某个地方具有对 myTextField 和 myModel 的有效引用,bind: 的参数是绑定的名称。正如查克所说.. [myTextField bind:@"value" toObject:myModel withKeyPath:@"myArray.@count" options:nil]
    • 是的。现在我明白了。 [self.myTextField bind:@"stringValue" toObject:self.myModell withKeyPath:@"myArray.@count" options:nil];需要注意的重要一点是,IB 中的文本字段也需要与成员变量 myTextField 有某种联系。 (objectValue 而不是 stringValue 也可以) - 谢谢大家!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 2022-01-22
    • 2011-11-28
    相关资源
    最近更新 更多