Bindings "on the fly"

245

Réponses

  • ClicCoolClicCool Membre
    18:45 modifié #32
    Tu dormiras mieux après j'te jure  ;D

    indice: ça passe bien sur par les options qui là  ne doivent plus être nil ;)
  • TiffTiff Membre
    18:45 modifié #33
    Je sèche, je ne vois pas quelle clef utiliser.
    NSDictionary *options = [NSDictionary dictionaryWithObject: @samedi forKey:
  • ClicCoolClicCool Membre
    18:45 modifié #34
    Tu y es presque  :D
    La clef c'est @NSNullPlaceholder
  • muqaddarmuqaddar Administrateur
    18:45 modifié #35
    Pff, un prof qui donne les réponses à  un élève, ça se saurait...qui plus est lui même prof...
  • TiffTiff Membre
    18:45 modifié #36
    p...... j'ai mis nullPlaceholder, j'ai oublié le NextStep, argh !!!!!!!!!!!!!!!!
  • TiffTiff Membre
    18:45 modifié #37
    Ah ben ça marche pas ?
    - (void)awakeFromNib {
    NSDictionary *options = [NSDictionary dictionaryWithObject: @samedi forKey: @NSNullPlaceholder];
    [popUp bind: @selectedObject toObject: self withKeyPath: @leJour options: options];
    [window bind: @title toObject: self withKeyPath: @leJour options: options];
    [popUpController bind: @content toObject: self withKeyPath: @jours options: nil]; }
  • ClicCoolClicCool Membre
    18:45 modifié #38
    ton option est bonne pour le titre de la fenêtre mais pas pour le popUp
  • TiffTiff Membre
    18:45 modifié #39
    Oui, mais j'ai remplacé Null par Default, puis par NoSelection, NotApplicable, MultipleValues, mais rien n'y fait. Où trouve-t-on la liste des placeholders ?
  • ClicCoolClicCool Membre
    18:45 modifié #40
    La doc sur les binding est assez dispersée +++
    Le plus gros des options est là  Binding Options
    pour le reste je suis toujours à  les chercher, dis moi si tu trouves pas ton bonheur dans cette page déjà  ?
  • TiffTiff Membre
    18:45 modifié #41
    Ah ! Parce que tu n'as pas la réponse ?
    Le lien que tu m'as donné ne fonctionne pas.
    Bon ben je regarderai demain soir, il faut quand même que je dorme quelques heures. À bientôt.
  • ClicCoolClicCool Membre
    septembre 2004 modifié #42
    Désolé c'était le lien vers mes docs perso, voilà  le bon ver Apple: http://developer.apple.com/documentation/Cocoa/Reference/CocoaBindingsRef/index.html

    Il contient je pense ce que tu cherches, à  savoir les valeurs nulles des PopUps
    Inserts Null Placeholder

    A Boolean value that determines if an additional item which represents Null is inserted into a matrix or pop-up menu before the items in the content array.

    If YES, an additional item is inserted into the matrix or pop-up menu?before the items in the content array?that returns Null as the selectedObject or selectedValue. The item is labeled using the null placeholder specified for the content binding or the contentValue binding.
    Constant @NSInsertsNullPlaceholder
    Value class NSNumber (Boolean)


    T'es toujours aussi pressé ?  ;)
    Osxitan semblait dire de pas donner la réponse toute faite trop vite  ;D
  • ClicCoolClicCool Membre
    18:45 modifié #43
    Attention! J'ai répondu un peu vite de peur que tu ne te décourrage, j'ai donc par la suite EDITE mon post pour qu'elle soit plus complète :)

    Pour ce qui est de la réponse, oui, je l'ai déjà  fait, mais c'est pas la réponse que tu m'as demandé, ce sont les références ou on peut la trouver ... et là  je t'avoue qu'on s'y perd dans les références aux bindings  ;D

    Tiens, au passage en voilà  une autre fort utile:
    NSKeyValueBindingCreation
  • ClicCoolClicCool Membre
    18:45 modifié #44
    Bon ça vien cette implémentation d'une valeur pas défaut (en cas de non séléction du popUp) pour la fenêtre ET le PopUp lui même ?

    Je ramasse les copies bientôt  ;D
  • TiffTiff Membre
    18:45 modifié #45
    Je ne boude pas, mais une page à  mettre à  jour avant demain sur un autre site (cinéma) me prend du temps.
  • TiffTiff Membre
    septembre 2004 modifié #46
    dans 1094508697:

    Inserts Null Placeholder

    Bon, ben je vois pas, j'ai écrit :
    <br />NSArray *values = [NSArray arrayWithObjects: [NSNumber numberWithBool: YES], @&quot;samedi&quot;, nil];<br />NSArray *keys = [NSArray arrayWithObjects: @&quot;NSInsertsNullPlaceholder&quot;, @&quot;NSNullPlaceholder&quot;, nil];<br />NSDictionary *options = [NSDictionary dictionaryWithObjects: values forKeys: keys];<br />
    

    Le menu affiche "No Value", donc il y a bien insertion d'un NSNullPlaceholder, mais ce nullPlaceholder ne prend pas la valeur @samedi.
    En fait, je ne veux pas un nullPlaceholder, je voudrais plutôt une valeur par défaut.
    Bon, ben je retourne chercher.
  • ClicCoolClicCool Membre
    18:45 modifié #47
    Salut Tiff, on s'y recolle ? ;)

    Il y a une différence entre initialiser le choix sur une des possibilités du PopUp, ce qui est très facile. Ne serais-ce que par l'initialisation que tu avais mise en place il y a 3 jours ...

    ... Et gérer, avec un Place Holder, la possibilité que rien ne soit sélectionné dans le popUp: soit par défaut d'initialisation, soit par volonté délibérée de l'utilisateur de ne rien sélectionner.
    C'est vers ce dernier aspects des bindings qu'il me parrait interressant d'aller.

    Si tu veux bien, ajoutes donc un place holder de nom sélection affichant "Jamais":
    L'utilisateur n'a pas choisi le jour des raviolis, il ne veux jammais en manger  ;D
    P.S.: Tu savais pas que ton appli servait à  gérer le jour des ravioli à  la cantine ? ;D
  • TiffTiff Membre
    septembre 2004 modifié #48
    Différence entre Null et NoSelection, en pratique ?

    Bon, dans AppController.m :
    <br />[popUp bind: @&quot;selectedObject&quot; toObject: self withKeyPath: @&quot;leJour&quot; options: options];<br />[window bind: @&quot;title&quot; toObject: self withKeyPath: @&quot;leJour&quot; options: nil];<br />[popUpController bind: @&quot;content&quot; toObject: self withKeyPath: @&quot;jours&quot; options: nil];<br />
    

    pour que le menu écrive "jamais" et la fenêtre "Untitled"

    Dans I.B j'ai mis jamais dans le NullPlaceholder.

    Tiens, voici tout le code :
    <br />#import &lt;Cocoa/Cocoa.h&gt;<br /><br />@interface AppController : NSObject<br />{<br />    IBOutlet NSArrayController *popUpController;<br />     IBOutlet NSPopUpButton *popUp;<br />    IBOutlet NSWindow *window;<br />        NSArray *jours;<br />   NSString *leJour;<br />}<br />@end<br /><br />#import &quot;AppController.h&quot;<br /><br />@implementation AppController<br /><br />- (id)init {<br />        [super init];<br />     jours = [[NSArray alloc] initWithObjects: @&quot;lundi&quot;, @&quot;mardi&quot;, @&quot;mercredi&quot;, @&quot;jeudi&quot;, @&quot;vendredi&quot;,<br />               @&quot;samedi&quot;, @&quot;dimanche&quot;, nil];<br /> return self; }<br />    <br />- (void)awakeFromNib {<br />      NSDictionary *options = [NSDictionary dictionaryWithObject: [NSNumber numberWithBool: YES] forKey: @&quot;NSInsertsNullPlaceholder&quot;];<br />        [popUp bind: @&quot;selectedObject&quot; toObject: self withKeyPath: @&quot;leJour&quot; options: options];<br />       [window bind: @&quot;title&quot; toObject: self withKeyPath: @&quot;leJour&quot; options: nil];<br />   [popUpController bind: @&quot;content&quot; toObject: self withKeyPath: @&quot;jours&quot; options: nil]; }<br />@end<br />
    


    Si quelqu'un a des commentaires...
  • ClicCoolClicCool Membre
    18:45 modifié #49
    Le null place holders gèrent les situations où la valeur renvoyée par les bindings est inexistante (NULL) même s'il y a une sélection courrante dans le NSArrayCtrl source.

    Ici nous nous interressons au cas où il n'y a pas de sélection sur le popUp.

    Mais c'est pas sous I.B. qu'il faut paramétrer ça (trop facile ;D) mais à  la volée dans le code en utilisant le dictionaire d'option de binding.
    Encore un effort ... ;)
  • muqaddarmuqaddar Administrateur
    18:45 modifié #50
    Allez Tiff, je te rejoins bientôt sur ce sujet pour finir une appli !
  • ClicCoolClicCool Membre
    18:45 modifié #51
    Ah zut, t'as édité ton post pendant que je te répondais  :-\

    Pour le popUp tu as demandé d'insérer un Null Place Holder mais tu ne l'as pas défini ...

    Pour la fenêtre aussi il faut un Null Place holder ...

    Le plus élégant, si ça peut t'orienter, est de définire le NullPlaceHolder dans le dico-OptionS.
    Puis de binder le titre de la fenêtre
    Puis d'ajouter au dico l'option insertNullPlaceholder pour binder le PopUp avec les options Complètes :)
  • TiffTiff Membre
    septembre 2004 modifié #52
    Oui, c'est ce que j'avais fait. NSInsertsNullPlaceholder -> Yes et NSNullPlaceholder ->@samedi et ça ne marchait pas. Mais je vais réessayer, car je crois me souvenir que si, en Placeholder, on met une valeur qui existe déjà  dans le menu, il y a un bug.

    Ah ben ça marche tjrs pas !
    <br />- (void)awakeFromNib {<br />    NSArray *values = [NSArray arrayWithObjects: [NSNumber numberWithBool: YES], @&quot;jamais&quot;, nil];<br />   NSArray *keys = [NSArray arrayWithObjects: @&quot;NSInsertsNullPlaceholder&quot;, @&quot;NSNullPlaceholder&quot;, nil];<br />   NSDictionary *options = [NSDictionary dictionaryWithObjects: values forKeys: keys];<br />       [popUp bind: @&quot;selectedObject&quot; toObject: self withKeyPath: @&quot;leJour&quot; options: options];<br />       [window bind: @&quot;title&quot; toObject: self withKeyPath: @&quot;leJour&quot; options: options];<br />       [popUpController bind: @&quot;content&quot; toObject: self withKeyPath: @&quot;jours&quot; options: nil]; }<br />
    



    [Fichier joint supprimé par l'administrateur]
  • ClicCoolClicCool Membre
    18:45 modifié #53
    ah bon ? je savais pas  ??? j'regarderais ça.

    Sinon t'as bon :)
  • TiffTiff Membre
    18:45 modifié #54
    J'avais fait des essais dans I.B. avant d'essayer de coder : le comportement était différent si j'inscrivais "jamais" ou si j'inscrivais "samedi". Ce n'est peut-être pas un bug, mais au moins incompréhensible.
    Tu sais pourquoi le menu affiche no value ?
  • ClicCoolClicCool Membre
    septembre 2004 modifié #55
    Normalement le menu affiche le place holder par défault "no value" quand il n'y a pas d'autre place holder défini.
    En principe en tout cas ... je vérifierais si tu veux.
    Mais là  j'suis à  l'apéro  :P
    Mais je reste à  ton écoute (ma soirée prévue est annulée :()

    [EDIT] oups t'as dit le menu affiche .... pas le PopUp affiche .... ???
  • TiffTiff Membre
    18:45 modifié #56
    Ben, le menu pop-up, quoi ???
    Tu as vu l'image ci-dessus ?
  • TiffTiff Membre
    18:45 modifié #57
    Bon, je décroche, de retour vers 22h. Désolé pour ta soirée !
  • ClicCoolClicCool Membre
    18:45 modifié #58
    dans 1094754485:

    Ben, le menu pop-up, quoi ???
    Tu as vu l'image ci-dessus ?

    Ah oui j'avais pas vu (et c'est pas de la pub ;) )
    c'est donc bien le popUp ...

    Si je peux me permettre, ce serai chouette d'ajouter la marque [EDIT] au début de la section que l'on ajoute quand on édite un post. ça aide le lecteur à  se repérer et le rassure (non il ne devient pas fou, y'a bien eu un rajout à  partir d'ici). ;)
  • ClicCoolClicCool Membre
    18:45 modifié #59
    dans 1094754616:

    Bon, je décroche, de retour vers 22h. Désolé pour ta soirée !

    Merci :)
    C'est surtout désolant pour celui qui devait nous recevoir :(

    J'vais manger moi aussi .... :)
  • TiffTiff Membre
    18:45 modifié #60
    dans 1094755063:

    Si je peux me permettre, ce serai chouette d'ajouter la marque [EDIT]

    C'est que je ne maà®trise pas encore toutes les astuces, moi !
    [EDIT]
    Bon j'essaye.
  • ClicCoolClicCool Membre
    18:45 modifié #61
    :D
Connectez-vous ou Inscrivez-vous pour répondre.