模型关键路径的语法 - 绑定xcode 5.1.1

时间:2014-06-07 12:21:20

标签: macos cocoa cocoa-bindings

嘿,我是mac开发新手,我想使用绑定(xcode 5.1.1)。

我想通过数组控制器的条目动态设置单选按钮的标题。我正在寻找类似于语法描述的方法,我可以如何执行它。

e.g。像value1 WHERE value2 =" bla"

如果我尝试在谷歌搜索,我总能找到以编程方式进行搜索的解决方案。

是否有一些示例向我展示了我可以在此字段中使用的语法?

下面的图片应该表明我的意思。

enter image description here

2 个答案:

答案 0 :(得分:1)

回答评论中澄清的问题......

首先,绑定并不总是正确的技术。它可以简化一些事情,但它不能做任何事情,即使对于它可以做的一些事情,它也不一定使它们更简单。

单选按钮通常以NSMatrix组织。在这种情况下,您可以绑定矩阵绑定以跟踪选择。矩阵有三个与内容相关的绑定,这可能会让人感到困惑。 “内容”绑定是基础。在某些情况下,这就足够了。但是,如果绑定的对象与矩阵的单元格应显示的值之间存在区别,则可以将“contentValues”绑定绑定为内容绑定的子路径。也就是说,它需要与内容绑定相同,可能还有其他元素添加到模型键路径的末尾。

此外,如果您希望所选对象与内容对象不同,则可以将“contentObjects”绑定到内容绑定的子路径。

例如,可能有一个数组控制器,其内容是一堆Person个对象。矩阵content绑定可能绑定到该数组控制器的arrangedObjects。如果你这样离开,矩阵的单元格将从每个description对象的Person填充。但是,您可以将矩阵的contentValues绑定到数组控制器arrangedObjects,模型密钥路径fullName。然后,将使用每个Person对象的全名填充矩阵单元格。

如果然后将矩阵的selectedObject绑定绑定到窗口控制器上的属性,则每次矩阵选择更改时,该属性都将设置为选定的Person对象。如果您愿意,可以将矩阵的contentObjects绑定绑定到数组控制器arrangedObjects,模型关键路径uniqueID。在这种情况下,窗口控制器属性不会设置为选定的Person对象本身,而是设置为其uniqueID属性。

或者,您可以将矩阵的selectedIndex绑定绑定到控制器属性。如果使用窗口控制器,那么只需在窗口控制器上直接设置属性即可指示矩阵选择的索引。或者你可以将它绑定到数组控制器的selectedIndex属性,在这种情况下,选择“存储”在数组控制器中。

答案 1 :(得分:0)

您需要一个不带参数的密钥路径,如key-value coding (KVC) reference.

中所述

通过绑定到数组控制器的选择,如果选择集合是一个具有属性或方法“value1”的对象,则绑定运行时调用方法valueForKeyPath:@"value1"

NSObject protocolperformSelector:withObject,但KVC protocolNSKeyValueBindingCreation protocol

中没有valueForKeyPath:withObject

那就是说,registering dependent keypaths可以提供一些等效的行为......

+ (NSSet*) keyPathsForValuesAffectingValue1 
{ 
    return [NSSet setWithObjects:@"value2",nil]; 
}

...这将确保任何时间值2更改,重新评估对value1的绑定。