“控制器密钥”在Interface Builder中的含义是什么?检查员>绑定?

时间:2009-02-27 15:38:09

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

我在文档中找不到他们解释所有这些字段及其含义的内容。特别是“控制器键”对我来说并不清楚。

4 个答案:

答案 0 :(得分:4)

Controller Key弹出菜单是一种帮助您发现控制器(通常是NSArrayController,NSObjectController或NSTreeController)所呈现的键的方法。

最好的例子是NSArrayControllers的selection键,它包含一组选定的对象。令人困惑的是NSObjectController也提供了一个“选择”键,尽管控制器只能控制一个对象(因此选择=对象)。

我同意它根本不清楚。当我以编程方式绑定对象时(即使用bind:toObject:withKeyPath:options:方法),我个人开始理解它。

答案 1 :(得分:4)

[复制my answer on another question ...]

控制器键是您绑定到的(控制器对象的属性)的键。模型关键路径是绑定对象可以通过其向模型对象请求更多基本对象(如字符串或图像)或其他模型对象(即向下钻取到模型中)的关键路径。

一个例子:假设你在一个数组控制器中有一个Person对象,每个Person都有一个name。将表列绑定到数组控制器,控制器键arrangedObjects(从而获取模型对象),模型键路径name(从而获取值对象)。

更复杂的示例:假设您有一个Departments的数组控制器。每个部门都包含人员(部门的员工)。您可以将People数组控制器绑定到Departments控制器,控制器键arrangedObjects(获取Department模型对象),模型键路径@distinctUnionOfObjects.employees(获取Person模型对象),然后将表列绑定到人员控制器,控制器密钥arrangedObjects,模型密钥路径name

那张桌子适合为贵公司工作的人;如果您有一个单独的预期员工表,您也可以为他们创建Person对象,并且它们不会显示在现有员工的表中,因为他们不在部门中。当你雇佣他们时,你会将他们添加到一个或多个部门;然后,它们将自动显示在People数组控制器中,因为该数组控制器正在观察所有部门的employees

答案 2 :(得分:1)

它与键值编码有关。您可以将IB中的控件绑定到控制器中的值。要连接该值,您必须指定它的键路径。例如,如果您在IB中有一个文本字段,并且想要将其绑定到控制器中的一个名为“name”的字段,则应将“name”指定为keypath。然后,您需要在控制器中设置名称字段,以便通过键值编码进行访问。这是通过使用@property和@synthesize说明符在10.5中完成的。

答案 3 :(得分:0)

请看一下这个主题:Cocoa Key Value Bindings: What are the explanations of the various options for Controller Key?

我发布了一个解释,说明在哪里找到所有Controller Key的定义。