[Bindings] Comment binder une tableview selon la sélection d'une autre table ?

Eddy58Eddy58 Membre
février 2006 modifié dans API AppKit #1
J'ai deux tableviews, chacune ayant son NSArrayController. Appelons-les Array1Controleur et Array2Controleur. Quand j'ajoute une donnée dans la première tableview, je surcharge la méthode -(id)newObject de Array1Controleur. Dans cette méthode je crée entre autres une nouvelle clef à  laquelle je fournis un array contenant lui-même des dictionaries.

Je voudrais que ma seconde tableview affiche les données des dictionaries de la clef ajoutée selon la sélection de la première tableview. Pour l'instant je me suis contenté d'initialiser Array2 dans la sous-classe Array1Controleur. (J'aurais pu le faire dans mon mainControleur comme pour l'initialisation de l'Array1 mais ça n'a pas d'importance pour le moment, c'est le chantier ;))
Et dans IB j'ai bindé ainsi :
Array1Controleur : Content Array -> Bind to -> MainControleur
                                                  Controller Key -> Aucune
                                                  ModelKeyPath -> Array1

Les colonnes de la première tableview : Value -> Bind to -> Array1Controleur
                                                                  Controller Key -> arrangedObjects
                                                                  ModelKeyPath -> LaClef 

Array2Controleur : Content Array -> Bind to -> Array1Controleur
                                                  Controller Key -> Selection
                                                  ModelKeyPath -> Array2

Les colonnes de la seconde tableview : Value -> Bind to -> Array2Controleur
                                                                  Controller Key -> arrangedObjects
                                                                  ModelKeyPath -> LaClef 

Tout ceci ne donne rien, ce qui me parait normal car rien n'est fait pour procéder au remplissage d'Array2. Donc est-il possible de réaliser ceci dans IB, où alors suis-je obligé à  chaque newObject,addObject, ou autre action nécessitant une modification de Array2, de faire moi-même ma cuisine entre les deux ArrayControleurs ? ???

Réponses

  • Eddy58Eddy58 Membre
    février 2006 modifié #2
    Bon, je me suis dit que finalement, l'objet associé à  cette clef ajoutée par programmation n'est en faites qu'un array composé de dictionaries, et qu'il me suffit simplement de faire pointer sur celui-ci mon Array2Controleur pour qu'il procède au remplissage de sa tableview, et du même coup supprimer l'Array2 qui devient inutile, ainsi que tout le code nécessaire à  son initialisation et son release.
    J'ai donc modifié mes bindings :
    Array2Controleur : Content Array -> Bind to -> Array1Controleur
                                                      Controller Key -> Selection
                                                      ModelKeyPath -> ClefArray

    Les colonnes de la seconde tableview : Value -> Bind to -> Array2Controleur
                                                                      Controller Key -> arrangedObjects
                                                                      ModelKeyPath -> UneClefDuDico

    Et là  ça marche impeccable, je vais pouvoir broder autour de ça. :)  :p :p    
Connectez-vous ou Inscrivez-vous pour répondre.