Utilisation 2 NSPopUpButton est des Bindings

aranaudaranaud Membre
18:20 modifié dans API AppKit #1
Grâce à  ce sujet Popup et bindings, j'ai pu de problème pour gérer un NSPopUpButton : l'affichage de la liste et l'enregistrement de la sélection.

Le problème se corse au moment où je veux en utiliser 2 à  la fois mais qui sont lié

Le choix du premier doit afficher une liste différents le seconds suivant sa sélection.

J'ai essayé de faire un binding par programme mais sa ne marche pas.

[Fichier joint supprimé par l'administrateur]

Réponses

  • laurrislaurris Membre
    18:20 modifié #2
    Je dirais qu'il faut binder
    • popup1 > NSArrayController1
    • popup2 > NSArrayController2

    et NSArrayController2 > selection de NSArrayController1.

    Ta structure sous-jascente doit être de type arborescente, ou alors, si tu calcules les valeurs du deuxième popup à  la volée, il faudrait modifier les accesseurs objectInMachinAtIndex: et numberOfMachin.

    Ou bien NSTreeController qui gère l'arbre.

    Je t'envoie un exemple si tu rames.
  • aranaudaranaud Membre
    18:20 modifié #3
    NSArrayController2 est binding avec contentArray de NSArrayController1. La structure est de type arborescente. La sélection est enregistré dans un troisième NSArrayController.

    Avec l'utilisation des tableaux, la sélection des listes ce fait bien.

    Je n'ai jamais utilisé cette object NSTreeController car je n'ai pas trop compris a quoi il sert. Si tu as un exemple, je veux bien.

    Nota : je préférais le faire avec des bindings ou notification pour des questions de simplifications du code.
  • AliGatorAliGator Membre, Modérateur
    18:20 modifié #4
    dans 1171866394:
    Je n'ai jamais utilisé cette object NSTreeController car je n'ai pas trop compris a quoi il sert. Si tu as un exemple, je veux bien.
    L'exemple le plus simple et le plus trivial c'est d'utiliser un NSTreeController pour le contenu d'une NSOutlineView (liste hiérarchique), au même titre que tu peux utiliser un NSArrayController pour une NSTableView ;)
  • aranaudaranaud Membre
    18:20 modifié #5
    Tu veux dire dans le même genre que ce qui est présent dans le sujet sur MacBidouille.
  • LeChatNoirLeChatNoir Membre, Modérateur
    18:20 modifié #6
    Salut,
    Il faudrait connaitre la structure de tes Array (ou plutot des objets qui sont dedans).
    Si t'as vraiment des relations père=> fils, effectivement le TreeController peut être judicieux .
    Sinon, aucun intérêt.
    Donne nous la composition des objets de tes 2 arrays pour voir...
  • aranaudaranaud Membre
    18:20 modifié #7
    dans 1171875930:

    Donne nous la composition des objets de tes 2 arrays pour voir...

    En version simplifier :

    [Fichier joint supprimé par l'administrateur]
  • AliGatorAliGator Membre, Modérateur
    18:20 modifié #8
    dans 1171870531:

    Tu veux dire dans le même genre que ce qui est présent dans le sujet sur MacBidouille.
    A peu près sauf que j'ai pas tout lu du post de MacBidouille, mais ils détaillent apparament bien l'exemple ; tu peux tout à  fait te contenter à  priori d'un NSArray (contenant éventuellement des sous-NSArray) comme contenu de ton NSTreeController plutôt que de créer une classe perso, si tu veux éviter.

    Après à  toi de voir entre la solution la plus simple et avec moins de code (directement utiliser un NSArray de NSArray ou NSDict de NSDict) ou la plus structurée (créer une classe perso qui rend les choses un peu plus claires), c'est selon ce qui te parait le plus clair pour comprendre le fonctionnement. Mais suivre l'exemple de MacBi peut être un bon début en effet.
  • 18:20 modifié #9
    dans 1171869889:

    L'exemple le plus simple et le plus trivial c'est d'utiliser un NSTreeController pour le contenu d'une NSOutlineView (liste hiérarchique)


    Ce n'est pas seulement le plus simple et le plus trivial, c'est aussi quasiment le seul. On peut aussi l'utiliser avec des NSBrowser, et c'est tout: Apple déconseille fortement de l'utiliser même pour des NSView perso.

    Sinon NSTreeController est utile si on a une collection avec des objets d'un seul type et qui ont entre eux des relations père-fils. À voir les captures que tu montres, ce n'est pas le cas, 2 array controllers seraient plus judicieux.
  • aranaudaranaud Membre
    18:20 modifié #10
    Voici ce que sa donne en utilisant 2 NSArrayController.


    [Fichier joint supprimé par l'administrateur]
  • aranaudaranaud Membre
    18:20 modifié #11
    Et dans cette version, le changement de la liste des postes se fait correctement mais je ne sais comme faire pour que cela soit prit en compte dans le NSArrayController "autre".

    Il semble que les bindings soit limité à  certains options et que l'on ne peut utiliser en même temps.  :crackboom:-

    [Fichier joint supprimé par l'administrateur]
  • aranaudaranaud Membre
    18:20 modifié #12
    Il y a pas à  dire, une bonne nuit fait beaucoup de bien.

    Il est comme même un peut étrange que l'on ne puisse pas le faire directement avec l'interface.

    [Fichier joint supprimé par l'administrateur]
  • Paisible.frPaisible.fr Membre
    18:20 modifié #13
    Bonjour, peut-on remettre les fichiers attachées ?

    Merci d'avance.

    <remarques>
    Deux choses pénibles suites aux nombreux changements d'url et évolutions du site :
    1) les anciennes urls ne fonctionnent souvent plus et ne sont plus référencées
    2) les pièces jointes ont tendances à  disparaitre.
    </remarques>
  • aranaudaranaud Membre
    18:20 modifié #14
    dans 1279119633:

    Bonjour, peut-on remettre les fichiers attachées ?

    Vu de quand sa date, je doute de les retrouver. Surtout que sa ma tellement pris la tête sa en plus que il y a des changement impromptu à  chaque changement de version qui fond que des truck qui fonctionne dans le système 10.4 ne fonction plus dans le 10.5 et pareille au passage de la version 10.6.

    Sa ma un peu dégouter de programmer en cocoa.
  • Paisible.frPaisible.fr Membre
    18:20 modifié #15
    Personnellement il met aussi arrivé de pester contre cocoa, surtout à  mes début, mais maintenant avec le recul je me rends que la plupart du temps c'est parce que je n'avais pas compris la philosophie ou le concept associé.

    Sinon pour les fichiers j'espère que les admins on un petit backup sous le coude.

    Amicalement
  • aranaudaranaud Membre
    18:20 modifié #16
    Sa doit être sa. Disions que tomber sur des méthodes déprécier à  chaque système ou presque ma mit un peu agacer. Surtout quand, sans recompiller l'application, sa fonction très bien sur une version d'un système et plus sur la suivant. J'ai fait sa juste par plaisir, par pour me prendre la tête à  chaque changement de version du système.

    Enfin, pas grave. Je suis passé à  autre chose. La j'ai pas le temps de faire une recherche mais je dois encore avoir les sources quelques pas. Je les remettra si je les retrouve.
Connectez-vous ou Inscrivez-vous pour répondre.