检查器中IB中“控制器密钥”属性的重点是什么?绑定窗格?

时间:2009-02-27 21:42:29

标签: cocoa interface-builder cocoa-bindings

Apple说:

  

NSController对象的属性。绑定到NSController对象时,使用此字段选择键路径中的第一个条目。与此字段关联的菜单显示所选控制器对象上可用的属性,以方便使用。您可以键入属性的名称,或者只是从提供的列表中选择它。

换句话说有人可以解释一下吗?

1 个答案:

答案 0 :(得分:2)

您正在将视图对象绑定到模型属性。像(示意性地):

myTextField.value <=> myModel.textValue.

虽然可以将视图属性直接绑定到模型对象的属性,如上所示,但实际上不应该这样做。您将错过Apple控制器提供的优秀功能(例如NSObjectControllerNSArrayController等)。相反,您应该将视图绑定到绑定到模型的控制器,例如:

myTextField.value <=> myObjectController.selection.textValue 
  and 
myObjectController.contentObject <=> myModel

在此设置中,myObjectController.selection是myObjectController.contentObject的键值绑定兼容代理,myObjectController可以充当视图和模型之间的中介。 Interface Builder将关注点分离为显式,因为控制器可能会为其绑定模型公开多个代理(例如NSArrayController的{​​{1}}和arrangedObjects)。在上面示例中绑定myTextField.value时,您将在“Controller Key”字段中输入“selection”,在“Model Object Keypath”路径字段中输入“textValue”。