Je voudrais avoir une 'Vue détaillée' lorsque l'utilisateur double-clique sur une ligne, je ne suis pas sûr de savoir comment obtenir les données sur NSViewController, donc peut afficher le contenu. J'utilise CoreData et je ne peux pas penser à un moyen de le faire.Obtention des données d'un NSTableView vers un NSViewController
Répondre
Il y a quelques étapes que vous devez faire ici:
Assurez-vous que la vue de la table est entraînée par un
NSArrayController
et que votre contrôleur pour la vue de la table (soit un contrôleur de fenêtre ou un contrôleur de vue , ou quoi que ce soit) a ceNSArrayController
lié à un ivar afin que vous y accédiez.Dans votre contrôleur de table, définissez l'action du double clic sur une méthode de votre contrôleur et définissez la cible sur votre contrôleur.
Dans la méthode du double clic, vous pouvez accéder à la ligne en demandant l'
-selectedObjects
duNSArrayController
et résultantNSArray
devrait avoir qu'un seul élément en elle.
De là, vous pouvez créer votre vue détaillée ou tout ce que vous voulez faire avec elle. Vous pouvez créer une feuille et l'afficher, ouvrir une fenêtre modale, etc.
Fixations de cacao.
Apple a un grand tutorial about creating Master-Detail interface s en ligne.
Les captures d'écran sont un peu obsolètes si vous utilisez Xcode 3.2, mais ce n'est pas si différent.
NSViewController a une propriété representedObject, qui vous permet de lier à l'objet modèle que vous affichez actuellement.
Édition: OK. Ma réponse n'est pas géniale parce que c'est seulement la moitié de la vérité.
Bien qu'il montre comment lier vos contrôles dans la vue de détail, il ne fournit pas une solution sur la façon de lier la sélection du contrôleur de matrice à representedObject
du contrôleur de vue.
Je serais intéressé par une solution de liaison seulement à ce problème.