Comment remplir un NSPopUpButton ?

DVP

Membre junior
15 Juin 2001
91
4
Montpellier
Bonjour

Je débute en programmation sur mac, et je rencontre un probleme qui doit etre tout bête, mais sur lequel je seche depuis plusieurs jours.

Voilà le contexte:
Je veux faire lancer un calcul à partir de données saisie dans la fenêtre de mon programme. (un calcul du credit)
J'ai donc plusieurs NSTextField pour saisir les différentes valeurs neccesaire à mon calcul, et pour la durée du crédit j'affiche un champ texte suivi d'une drop down pour choisir si le champ texte contient des années ou des mois.
En gros pouvoir rentrer "10 ans" ou "120 mois"

Mon probleme porte sur cette drop down.

J'ai chois un NSPopUpButton car je veux restreindre le choix aux elements de ma liste et ne pas permettre la saisie de valeurs par l'utilisateur (si j'ai bien compris, c'est ce qui differencie un NSPopUpButton d'un NSComboBox)

J'ai donc un NSPopUpButton dans Interface Builder.
Dans le .h de mon application j'ai un IBOutlet qui lui correspond:
Bloc de code:
IBOutlet NSPopUpButton *maDropDown;
Dans IB j'ai liée le NSPopUpButton à la variable maDropDown de mon application.

Dans le .m de mon application, je cherche à remplir mon popup button avec ma liste {mois, années} au moment ou l'appli est lancée.

J'ai donc fait ceci: (à partir d'exemples chopées ici et la sur le net)

Bloc de code:
-(id)init
{
    [super init];
    listeTypes=[[NSArray alloc] initWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:@"mois", @"name", @"m", @"value", nil],[NSDictionary dictionaryWithObjectsAndKeys:@"années", @"name", @"a", @"value", nil], nil];
    [maDropDown addItemsWithTitles:listeTypes ];
    return self;
}
Mais ca ne marche pas... mon popup button reste vide.

Alors soi j'ai oublié un truc, soit je fait quelque chose de travers, mais j'aimerai bien savoir quoi.:(
Si quelq'uun peu m'aider...

Merci :zen:
 

DVP

Membre junior
15 Juin 2001
91
4
Montpellier
Tu débutes en programmation sur mac ou en programmation tout court ?
Sur mac seulement, jusqu'à présent je n'ai fait que du J2E

Ca marcherait sans doute mieux en utilisant correctement addItemsWithTitles.
Tu lui files une NSArray contenant des NSDictionary.
Selon la doc, il faudrait des NSString
Au temps pour moi, j'aurai du lire plus attentivement la doc :rose:

Ah ok, tu as utilisé cette source, mais sans rien comprendre.
T'es pas loin de la verité :rolleyes:

En tous cas, merci, je vais essayer des ce soir de faire un array de NSStrings.
 

DVP

Membre junior
15 Juin 2001
91
4
Montpellier
Hop, me revoilà avec la solution.

Effectivement c'était tout simple:

- (void)awakeFromNib
{
[dropDown removeAllItems]; // Pour virer les Item1, Item 2 et Item 3 mis par interface builder
[dropDown addItemWithTitle:mad:"mois"]; // pour rajouter une entrée
[dropDown addItemWithTitle:mad:"années"]; // et une seconde.
}


Enuite un

NSString *choix=[dropDown titleOfSelectedItem];

permet de récupérer le texte sélectionné

J'imagine que ca n'est pas la meilleure methode, remplir le NSPopupButton avec un tableau contenant la liste des items de choix puis se baser sur l'index (via indexOfSelectedItem) pour savoir ce qui a été choisi doit etre mieux.
 

tatouille

Vétéran
1 Juin 2004
5 174
494
Stanford CA
Hop, me revoilà avec la solution.

Effectivement c'était tout simple:

- (void)awakeFromNib
{
[dropDown removeAllItems]; // Pour virer les Item1, Item 2 et Item 3 mis par interface builder
[dropDown addItemWithTitle:mad:"mois"]; // pour rajouter une entrée
[dropDown addItemWithTitle:mad:"années"]; // et une seconde.
}


Enuite un

NSString *choix=[dropDown titleOfSelectedItem];

permet de récupérer le texte sélectionné

J'imagine que ca n'est pas la meilleure methode, remplir le NSPopupButton avec un tableau contenant la liste des items de choix puis se baser sur l'index (via indexOfSelectedItem) pour savoir ce qui a été choisi doit etre mieux.

on ne se fit jamais awakeFromNib imagine si ton popup et dans un autre nib que tu load dans le main nib?

// [dropDown removeAllItems];

fais le dans le nib...