UIPicker

Eric P.Eric P. Membre
20:38 modifié dans API UIKit #1
Bonsoir et bonne année à  tous,

Est-il possible d'avoir un UIPicker avec 2 roues mais avec chacune un nombre de "lignes" différent ?

Merci.

Eric.

Réponses

  • AliGatorAliGator Membre, Modérateur
    20:38 modifié #2
    Ben heu j'ai jamais essayé d'utiliser un UIPickerView, mais j'ai regardé la doc, et on voit qu'on peut indiquer un nombre de "rows" pour chaque composant, donc à  priori tout est prévu pour !

    Donc toi tu veux deux "components" (2 roues), et chaque component étant sensé avoir un nombre de "rows" (lignes) différent... Ben il suffit d'implémenter ton dataSource comme il faut, avec les méthodes du protocole UIPickerViewDataSource
    - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {<br />&nbsp; return 2; // 2 components<br />}<br /><br />- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {<br />&nbsp; // imaginons que data est un NSArray à  2 éléments (un pour chaque component/roue)<br />&nbsp; // [data objectAtIndex:0] contient array de textes pour la première roue<br />&nbsp; // [data objectAtIndex:1] serait un NSArray de textes pour la 2e roue<br />&nbsp; return [[data objectAtIndex:component] count];<br />}
    
    Et pour que ta UIPickerView affiche le bon texte, dans ton delegate (qui peut être le même objet que ton datasource, remarque) :
    - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {<br />&nbsp; NSArray* textsForWheel = [data objectAtIndex:component];<br />&nbsp; return [textsForWheel objectAtIndex:row];<br />}
    
    BOn fait au feeling mais tu vois l'idée
  • LastikoLastiko Membre
    20:38 modifié #3
    sacré ali :D

    avant la fin de l'année je pronostique 2900 posts :D
  • Eric P.Eric P. Membre
    20:38 modifié #4
    Oui merci Ali.

    Je n'avais vu le "(NSInteger)component" de la fonction qui retourne le nombre de lignes.

    (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component

    Je ne suis pas encore familiarisé avec ce style d'écriture.

    Eric.
Connectez-vous ou Inscrivez-vous pour répondre.