2010-04-03 4 views
1

J'ai une composition de quartz avec un cube et les entrées de rotation X/Y/Z sont publiées. Sur Interface Builder, j'ai créé un QCView et un QCPatchController avec la composition de quartz précédente chargée. Dans QCView le contrôleur de correctifs est lié, et les ports publiés de rotation sont également liés à trois NSSlider, donc quand je change la valeur du NSSlider's alors le cube tourne. Tout cela fonctionne très bien, mais je veux changer les valeurs de rotation du cube à partir de l'App Delegate sur XCode. J'ai essayé de changer la valeur du NSSliders avec des IBOutlets pointant dessus, mais ce changement ne s'applique pas au cube, comme c'est le cas quand je change les curseurs directement avec ma souris. Que dois-je instancié et/ou comment accéder et modifier ce Input_Ports.value à travers le CQPatchController?Interaction du code avec la composition de quartz

Merci beaucoup pour votre lecture, j'ai vraiment besoin d'aide!

Répondre

0

C'est en fait assez simple! Le contrôleur de patch acceptera très bien les setValue:forKeyPath: de KVC. (Le chemin de clé souhaité ressemblera probablement à patch.Input_Ports.value.)

Pour vous connecter à votre contrôleur de correctifs, vous devez ajouter une prise à votre délégué d'application. Dans le fichier .h de votre application, ajoutez une variable d'instance IBOutlet NSObjectController* patchController.

IBOutlet ne fait rien pour le compilateur, mais il signale à Interface Builder qu'il y a une prise de courant là. Une fois que vous avez ajouté cette ligne, vous pouvez revenir à Interface Builder et faire glisser le contrôle de votre délégué d'application vers votre contrôleur de patchs, en connectant ainsi la sortie du patchController à l'instance spécifique de votre fichier .nib.

(Il n'y a pas de fichier .h pour QCPatchController, mais il est une sous-classe de NSObjectController, afin que vous puissiez en toute sécurité le déclarer comme tel.)

+0

C'est ce que je l'ai essayé, mais comment puis-je accéder à l'instance du contrôleur de patch, a déclaré dans Interface Builder, à partir du code App Delegate de XCode? Je sais que cela pourrait être beaucoup newbie, mais je suis en fait ... Merci pour votre réponse! –

+0

Pouf, j'ai ajouté des informations sur les points de vente. Essayez de formuler et d'intituler votre question la prochaine fois afin qu'elle se concentre vraiment sur la partie spécifique du problème avec lequel vous rencontrez des problèmes. (Cette fois-ci, peut-être «Accéder aux instances dans les fichiers nib par programmation» aurait été mieux, car la question n'était pas propre à Quartz Composer.) Si vous connaissiez le terme «Ajout d'un IBOutlet».) – andyvn22

+0

Oui, j'avais besoin pour savoir si ce genre d'instanciation était possible, et je sais que le mécanisme IBoulet, mais XCode ne recongnice classe QCPatchController, et je ne sais pas quoi importer. J'ai essayé #import et d'autres bibliothèques/frameworks connus sans succès. Quel est le besoin d'importation? –