[Bindings] Comment binder une tableview selon la sélection d'une autre table ?
Eddy58
Membre
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 ? ???
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 ? ???
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
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. Â Â Â