0

Ma question concerne Interface Builder et IKImageBrowserView n'implémentant pas les liaisons comme je le pensais.IKImageBrowserView ne semble pas se lier correctement

J'ai un chemin clé assez long pour arriver à un NSArrayController, dont le contenu que je veux afficher dans le IKImageBrowserView.

Ceci est le chemin d'accès clé que je lie une liaison de modèle d'affichage de NSTextField à: [email protected]t de l'AppDelegate. Cela fonctionne très bien et me donne le nombre d'éléments non validés dans le tableau d'images appartenant à l'ordre actuel, ce qui est ce qu'il est censé faire.

Lorsque je tente de lier le chemin de la clé suivante à la content de IKImageBrowserView: currentOrder.imagesArray.unvalidatedImages.arrangedObjects du AppDelegate, Interface Builder ne donne aucune erreur, mais agit plutôt comme si je ne l'avais pas quoi que ce soit entré. Lorsque je reviens à l'inspecteur, le chemin de la clé des liaisons est à nouveau vide.

Il n'enregistre cependant ce qui suit à la console: Ignoring exception related to working with bindings: NSUnknownKeyException, [<NSCustomObject> addObserver:<IKImageBrowserView ...> forKeyPath:@"currentOrder.imagesArray.unvalidatedImages.arrangedObjects" ...] was sent to an object that is not KVC-compliant for the "currentOrder" property.

Mon AppDelegate implémente currentOrder comme @property retenue et tous les sous-clés sont également @properties. Je peux être sûr que ces propriétés sont KVC-okay parce que le NSTextField ci-dessus est capable de lire les changements sans problème. Il est intéressant de noter que le selectionIndexes de IKImageBrowserView est capable de se lier à ...unvalidatedImages.selectionIndexes, ce n'est que le content qui ne le peut pas.

J'ai implémenté une solution de contournement dans laquelle j'ai placé un NSArrayController dans mon fichier nib et lié le tableau de contenu à ...arrangedObjects puis lié le IKImageBrowserView au contrôleur RAID, mais serait très heureux d'avoir une solution plus propre, ou au moins de savoir si je fais quelque chose de mal.

Merci!

Répondre

1

Avez-vous essayé d'implémenter les méthodes de <IKImageBrowserDataSource> dans votre délégué d'application et d'utiliser la connexion _dataSource au lieu d'une liaison? Cela fonctionne pour moi, et c'est comment le Apple tutorial vous le faites.

Vous devez uniquement implémenter – numberOfItemsInImageBrowser: et – imageBrowser:itemAtIndex: pour fournir les données, ce qui n'est pas trop grave. La partie un peu plus délicate consiste à implémenter une classe <IKImageBrowserItem> pour envelopper vos données, mais même cela ne nécessite pas d'efforts considérables. Le tutoriel lié ci-dessus devrait beaucoup aider.

Questions connexes