[résolu] Comment deux NIB peuvent-ils être liés au même ArrayController ?
Voilà mon problème :
- J'ai deux NIB, avec deux NSViewController associés, appelons-les : MainViewController et SubViewController.
Dans MainViewController, j'utilise un ArrayController pour gérer mon affichage. Cet ArrayController est lié à un NSArray appelé myEntries.
Mon deuxième NIB, SubViewController, est "chargé par le premier".
Je souhaiterais pouvoir lier des objets de SubViewController à l'ArrayController de mon premier NIB.
Avez-vous des idées ?
Merci !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Peut-être en créant une deuxième instance de ArrayController dans SubViewController, en l'écrasant pour copier celle de MainViewController et en se débrouillant pour que la "copie" soit au courant quand l'"original" est modifié.
dans le SubViewController.
Dans MainViewController, une fois le SubviewController instancié, passe-lui le pointeur sur self.arrayController.
Tu pourras alors binder sur self.arrayController dans SubviewController.xib.
Je n'ai jamais essayé avec ce type de classes, mais cela marche impec avec d'autres types comme la classe audio de TechnoDrive par exemple. Ainsi, toutes les autres classes ont un accès à la classe qui gère l'audio.
En l'occurrence, ce n'est pas ce qu'on veut ici; mais qu'ils utilisent la même instance, donc on va passer une référence (le pointeur) sur le NSArrayController.
[maSousClasse setAudioManager...];
Je crois avoir testé ça et je crois que ça ne marchait pas.
Du coup, j'ai trouvé une autre méthode, avec l'aide de lauderma : dire que le representedObject du SubviewController est le arrayController "d'en haut". Puis, les bindings se font avec : representedObject.selection
J'ai compris ce qui ne marchait pas : dans SubViewController, je créais une @property NSArrayController mais en plus je le déclarais comme IBOutlet et le faisais dormir dans le NIB...
J'ai fait cette erreur car j'avais toujours vu les NSArrayController être créés via des NIB.
Avec le recul, je vois bien que c'est pas logique et que ce n'est pas ce que Céroce m'avait dit de faire...