[Résolu] NSArrayController, View-based NSTableView et bindings...
Bonjour (ou bonsoir),
"Dé plous en plous difficile", comme dirait le général Alcazar. Ou "Tout est dans le titre" comme je l'ai lu parfois ici...
Je me lance dans la NSTableView avec view-based cells. Tant que je n'ai qu'une colonne, comme dans les exemples Apple, pas de souci, c'est même enfantin, ça marche et c'est très joli. Code: zéro ligne, dérivation: aucune.
Mais comme souvent, quand on en veut plus, ça se complique. Mon problème est que je veux plusieurs colonnes, sur le modèle de la première. Et là , ça coince au niveau des bindings.
Vous l'aurez compris, aficionados de la datasource, inutile de me proposer d'en passer par cette *facilité" " à laquelle doivent se résigner les programmeurs iOS, faute de mieux. En MacOS, nous avons les bindings, et je tiens à obtenir une solution bindings. -_-
Je joins une copie d'écran qui montre mon problème actuel. La NSView cell contient trois NSTextFields joliment coloriés en bleu (objectValue.cleBleue) rose (objectValue.cleRose) et vert (objectValue.cleVerte).
Chaque NSTableColumn, me disais-je, devrait être liées au même contrôleur, mais par une clé différente: colonne 1: bindTo myController.arrangedObjects.colonne1, etc.
Mais rien à faire: le contrôleur considère toutes ces colonnes comme une seule, et si j'en modifie une, les deux autres reproduisent la même modification.
Dès lors, comment binder ces colonnes pour qu'elles deviennent indépendantes ?
J'ai presque toujours trouvé ma solution ici. J'espère qu'il en sera de même cette fois...
Réponses
Je tiens une solution (c'est peut-être la bonne d'ailleurs). Il faut donner des clés différentes par colonne :
Pour pouvoir te répondre il faut avoir une idée de la structure de tes données (ton modèle).
NS(Mutable)Array of NS(Mutable)Dictionary
Un extrait du modèle ?
Le modèle tu l'as (et à la rigueur qu'importe puisqu'il est abstrait), mais voici le "setup" du contrôleur:
Tout le reste est bindings. Comme je récupère un NSArray de NSDictionaries, il me faut tout transformer en mutable: Un NSMutableArray de NSMutableDictionaries, sinon la Vue ne sera pas éditable. C'est le rôle du contrôleur que de transformer le Modèle en quelque chose que l'utilisateur peut modifier (la Vue).
La vraie question était: comment binder via cette Vue au Contrôleur.