Lier avec les bindings, différente vue de l'interface ?
aranaud
Membre
Je voudrai savoir si il est possible de choisir la vue à afficher dans un NSView, de façon automatique (sans code), avec les bindings.
Pour que simplement, le nom de l'objet soit enregistrer dans un fichier.
Pour que simplement, le nom de l'objet soit enregistrer dans un fichier.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Pour la première partie, c'est possible même si ce n'est pas explicitement prévu puisque NSView n'expose aucun binding à l'origine. On peut quand même binder le contenu d'une NSView à une autre NSView. Dans mon cas j'ai bindé le "contentView" d'une NSBox à une NSView et ça fonctionne. La seule interrogation , c'est la gestion de la mémoire parce qu'avec les bindings on est dans le flou à ce niveau, qui pis est avec des NSView.
Pour la seconde partie (obtenir la vue à partir d'un string), je pense qu'un NSValueTransformer utilisant la fonction NSClassFromString (NSString *aClassName) devrait faire l'affaire.
Je vais voir ce qui se passe si je binde le "contentView".
Merci.
Edit :
selon ta méthode, l'organisation des objects seraient de se type la :
or moi je voudrai avoir ceci :
Les vues étant enregistrées dans les resources avec Interface Builder.
Mais, j'ai pas bien compris l'utilisation NSValueTransformer. Si tu pouvais m'éclairer grâce à un exemple. Je t'en serais reconnaissant.
Tu peux en voir des exemples sur cette page sur les bindings avec l'exemple "To Dos".
http://homepage.mac.com/mmalc/CocoaExamples/controllers.html
Par contre, à te relire, je crois que je n'ai pas bien compris ce que tu binde: le nom de l'outlet ou le nom de la classe ?
Si c'est le nom de l'outlet, pas besoin de transformer. Tu renvoie l'instance représentée par l'outlet avec un accesseur et tu binde le "keyPath" du Controller au nom de cet accesseur.
Mais ce que semble pouvoir faire NSValueTransformer pourrait m'intéresser.