L. DPenha
L. DPenha

Reputation: 519

Dynamically Add values to UIPickerView at run time

How can you dynamically add values to UIPickerView at runtime.

I'm using the following code to populate a UIPickerView statically. Need to add values dynamically at run time, for e.g. Three, Four etc.

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

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

Upvotes: 3

Views: 11799

Answers (2)

essetesse
essetesse

Reputation: 11

Hey I had a problem with UIPickerView..... when I call reloadAllComponents it wasn't calling widthForComponent, but it was calling other delegate methods such as titleForRow.... I have no idea why this is, perhaps apple doesn't want the width changing dynamically? anyway it was on another screen so I didn't have the animation/no-animation issue. I found that by resetting the delegate of the picker, I could get widthForComponent to be called again!

i.e.

picker.delegate = view;

where view implements UIPickerViewDelegate.... hope this helps someone out there!

Upvotes: 1

Sophie Alpert
Sophie Alpert

Reputation: 143114

If you had an array of the titles, you could use something like:

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

The titles will be refreshed when you call [pickerView reloadAllComponents] (or reloadComponent: if you have more than one column and only want to refresh one of them).

Upvotes: 14

Related Questions