2009-08-03 8 views
0

J'ai une NSTableView connectée aux données de base. Voici ce que je veux faire.Colonne de commutateur NSTableView

La table comporte deux colonnes. Lorsque j'ai terminé l'édition de la première colonne et que j'ai appuyé sur Tab pour passer à la colonne suivante, je veux remplir la deuxième colonne par programme en fonction des données de la première colonne. Y a-t-il une méthode de délégué qui peut m'aider avec ceci?

Merci

Répondre

1

Ce n'est pas comment une vue de table fonctionne. Chaque ligne est un élément et les colonnes sont des propriétés différentes de cet élément. Tenter de faire autrement, c'est combattre le cadre et le HIG.

Peut-être que vous voulez un NSBrowser à la place.

+0

Huh? Je ne suis pas sûr que cela a du sens? – Jacob

+0

C'est le cas. Chaque ligne d'une vue de table affiche un élément. Le questionneur demande d'afficher différentes listes dans chaque colonne, ce qui mettrait plusieurs éléments différents dans chaque rangée (par opposition aux propriétés d'un seul élément). La vue à utiliser pour afficher plusieurs listes dans des colonnes séparées est un NSBrowser, pas un NSTableView. –

0

Yep c'est pas trop dur une fois que vous comprenez comment les cadres de pomme fonctionnent.

Vous avez simplement besoin que votre objet contrôleur (situé derrière la table) devienne un "délégué" pour écouter les événements d'événements dans le champ de texte de la première zone de texte. Lorsque votre contrôleur reçoit un message indiquant qu'un utilisateur a quitté la première zone de texte, les données de la première zone de texte peuvent être lues et transmises à l'objet modèle (qui stocke toutes vos données).

Votre objet modèle saura comment mettre à jour ce qui devrait être dans le deuxième champ et envoyer un message à votre contrôleur que la deuxième colonne a changé et la mise à jour

(SI cela vous confondez besoin de lire pommes documents sur MVC (Model View Controller).)

+0

Vous supposez qu'il y aura toujours un nombre égal d'éléments dans la deuxième colonne en tant que première colonne. Vous supposez également que les "objets du modèle" représenteront en quelque sorte plusieurs éléments, et que chacun représentant un élément pour la première colonne saura quel élément il devrait être dans la deuxième colonne. Le contrôleur pourrait arranger la dernière partie, mais c'est toujours un hack énorme qui combat le framework et le HIG. –

+0

Peter, je ne pense toujours pas que vous comprenez ce que j'essaie de faire. Imaginez une table avec deux colonnes. Dites que je voulais que l'utilisateur entre un nombre dans la première colonne, puis la deuxième colonne serait peuplée avec le premier nombre multiplié par deux. Les deux colonnes de chaque ligne sont liées et seront ajoutées en tant qu'une entité de données de base. Maintenant, je n'ai pas été en mesure de trouver une bonne méthode de délégué qui me dirait quand le champ est commuté. Mais je pense que j'ai besoin de savoir quand [tableView selectedCell] change. Je ne sais pas grand-chose sur comment fonctionne l'observation - pouvez-vous observer une valeur comme celle d'un objet IB? –

Questions connexes