J'essaie de créer une vue similaire aux vues de propriétés de Motion.NSTableView, plusieurs cellules et liaisons
Chacun de mes objets de propriété contient une définition du type de cellule, il veut afficher comme. Mais en même temps, j'aimerais utiliser des liaisons pour que les valeurs soient automatiquement mises à jour car elles peuvent être changées ailleurs.
J'ai essayé différentes approches du problème.
cellules multiples et
dataCellForTableColumn:
tout cela permet de rendre se produire correctement pour tous les types cellulaires, je perds des liaisons. NSProxy: J'ai également essayé d'utiliser un objet proxy que je pensais transmettre toutes les méthodes au type de cellule sélectionné derrière lui, mais encore une fois, les liaisons ne semblent pas fonctionner ici.
Est-ce que quelqu'un a eu une expérience avec ce genre de problème avant? Ou est-ce l'un des cas où les fixations ne vont pas le couper, et je vais devoir faire les lourdes charges moi-même?
À la votre!
Il est en grande partie que vous avez dit - je lié à un NSArrayController la colonne de table, et les valeurs apparaissent correctement si j'utilise un NSTextFieldCell. Ils sont également édités correctement quand je les change (il appelle le setObjectValue approprié: sur mon objet de propriété). Mais lorsque je renvoie un NSSliderCell, il définit correctement la valeur, mais lorsque je fais glisser le curseur, il ne définit pas la valeur en conséquence. –
J'ai juste essayé un exemple de test, et vous avez raison, il échoue comme vous l'avez décrit. Je ne suis pas sûr de ce que je ne suis pas en train de configurer correctement (en termes de liens, d'objets représentés, etc?) Sur la cellule avant de le renvoyer. Espérons que quelqu'un de plus compétent va peser ici. –
Je ne suis pas sûr que ce soit la "bonne" méthode, mais si je mets aussi la source de données de la vue table, et implémentons uniquement tableView: setObjectValue: forTableColumn: row :, qui appelle simplement setObjectValue: sur ma propriété classe, tout semble fonctionner. J'ai hâte d'entendre s'il y a un moyen alternatif, mais pour l'instant, cela fonctionne pour moi. –