2009-02-25 10 views
3

Comment pouvez-vous ajouter dynamiquement des valeurs à UIPickerView lors de l'exécution.Ajouter dynamiquement des valeurs à UIPickerView au moment de l'exécution

J'utilise le code suivant pour remplir un UIPickerView de manière statique. Besoin d'ajouter des valeurs dynamiquement au moment de l'exécution, par ex. Trois, quatre, etc.

- (NSString *) pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{ 

    NSString *title = nil; 
    if(row==0){ 
     title = @"One"; 
    } 
    if(row==1){ 
     title = @"Two"; 
    } 

Répondre

14

Si vous aviez un tableau des titres, vous pouvez utiliser quelque chose comme:

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { 
    return [titles objectAtIndex:row]; 
} 

Les titres seront mises à jour lorsque vous appelez [pickerView reloadAllComponents] (ou reloadComponent: si vous avez plus qu'une seule colonne et ne souhaite que rafraîchir l'un d'entre eux).

+0

Sur quel événement UIPickerView relira-t-il les valeurs? –

+1

Désolé, j'aurais dû le mentionner. Actualisé. –

1

Hey j'ai eu un problème avec UIPickerView ..... quand j'appelle reloadAllComponents il n'appelait pas widthForComponent, mais il appelait d'autres méthodes de délégué comme titleForRow .... Je ne sais pas pourquoi c'est, peut-être apple ne veut pas que la largeur change dynamiquement? de toute façon c'était sur un autre écran, donc je n'ai pas eu le problème d'animation/pas d'animation. J'ai trouvé qu'en réinitialisant le délégué du sélecteur, je pourrais faire appel à widthForComponent à nouveau!

à savoir

picker.delegate = view; 

où implémente vue UIPickerViewDelegate .... Espérons que cela aide quelqu'un là-bas!

Questions connexes