[娎solu] Combo Box IB-like

cargocargo Membre
avril 2006 modifié dans API AppKit #1
Bon, la combo box c'est quand même bien pratique pour l'utilisateur. C'est pratique à  condition que ce soit dynamique comme dans les bindings panels de IB.
La liste s'allonge au fur et à  mesure des ajouts de l'utilisateur mais il n'y a pas de redondance.
Donc soit une entité (CoreData) ou une class A peu importe, dont les instances sont gérées par un arrayController. Disons que A a une propriété P.
Je souhaite que toutes les valeurs de P apparaissent dans la liste de la combo. J'ai bindé la combo sur le controller de A / MKP:  P,  comme il faut.

Problème : Toutes les valeurs de P apparaissent dans la liste de la combo donc il y a redondance. Si l'utilisateur rentre Paul Pierre Jacques puis encore Paul, Paul va apparaitre 2 fois dans la liste, ce qui n'est pas le cas dans IB par exemple.

Solutions: J'ai essayé une relationship de A vers A (vers elle-même) avec un @distinctUnionOfArray dans un controller vs dans le binding de la combo. J'ai aussi essayé de trouver un prédicat pour trier un controller de A réservé à  la liste de la combo mais rien ne marche. Une idée ?

Réponses

  • cargocargo Membre
    avril 2006 modifié #2
    Bon ben j'ai trouvé la soluce tout seul comme un grand.
    Il suffit de poster ici pour trouver la réponse soi-même, c'est magique.  ;D

    Finalement j'ai d'abord testé le @distinctUnionOfObjects sur un textField pour voir si ça gazait (le @sum fonctionne y a pas de raison), et ensuite j'ai réfléchi calmement avec ma tête pour binder la combo.

    Voilà  le binding de la combo box dynamique IB-like :

    content: arrangedObjects.@distinctUnionOfObjects.la_propriété
    content values: arrangedObjects.@distinctUnionOfObjects.la_propriété (idem)
    value: selection.la_propriété

    à  la vôtre... :p

    [Edit] lol ça fait des mailto mon binding [/Edit]
Connectez-vous ou Inscrivez-vous pour répondre.