2009-09-21 8 views
3

J'essaie de créer une vue similaire aux vues de propriétés de Motion.NSTableView, plusieurs cellules et liaisons

ScreenShot

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!

Répondre

0

Je ne l'ai pas réellement testé, mais vous ne devriez pas perdre les liaisons lorsque vous utilisez dataCellForTableColumn: row:? Pouvez-vous décrire un peu plus en détail ce que vous avez essayé en ce qui concerne les fixations?

Vous devriez être en mesure de définir la valeur de la colonne liée à la propriété "value" de votre objet. Ensuite, si vous renvoyez le type de cellule correct dans dataCellForTableColumn: row: il doit s'afficher correctement.

Edit: --- supprimé à titre gratuit des conseils erronés sur les cellules vs vues :)

+0

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. –

+0

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. –

+0

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. –

Questions connexes