2009-02-27 3 views
2

Apple dit:Quel est le point de la propriété "Controller Key" dans IB dans le volet Inspector> Bindings?

Un attribut d'un objet NSController. Lors de la liaison à un objet NSController, vous utilisez ce champ pour sélectionner la première entrée dans le chemin de clé. Le menu associé à ce champ affiche les propriétés disponibles sur l'objet contrôleur sélectionné pour plus de commodité. Vous pouvez taper le nom de la propriété ou simplement le sélectionner dans la liste fournie.

Quelqu'un peut-il expliquer cela en d'autres termes?

+0

Dupliquer de http://stackoverflow.com/questions/595257/ –

Répondre

2

Vous liez un objet de vue à une propriété de modèle. Quelque chose comme (de façon schématique):

myTextField.value <=> myModel.textValue. 

Pendant que vous peut lier une propriété de vue directement sur la propriété de votre modèle objet comme indiqué ci-dessus, vous devriez vraiment pas. Vous manqueriez les fonctionnalités intéressantes fournies par les contrôleurs Apple (par exemple, NSObjectController, NSArrayController, etc.). Au lieu de cela, vous devez lier votre point de vue à un contrôleur qui est lié au modèle, comme:

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

Dans cette configuration, myObjectController.selection est un proxy compatible valeur-clé obligatoire pour myObjectController.contentObject et myObjectController peut agir en tant que médiateur entre la vue et le modèle. Interface Builder rend cette séparation des préoccupations explicites parce que les contrôleurs peuvent exposer plusieurs procurations pour leur modèle lié (comme l » arrangedObjectsNSArrayController et selectedObjects). En liant myTextField.value dans l'exemple ci-dessus, vous devez entrer 'selection' dans le champ "Controller Key" et "textValue" dans le champ "Model Object Keypath".

+0

Quelle est la différence avec: rien dans 'Controller Key' et' selection.textValue' dans le 'Model Key Path'? Plus: avec un 'View Controller' le champ' Controller Key' est toujours désactivé. Pourquoi ? Je vous remercie – Colas

Questions connexes