jp chance
jp chance

Reputation: 559

iphone SDK: How to set the initial value of a UIPickerView?

I have a picker view that has a list of numbers to pick from. I want to be able to initialize the control at a particular row. For example, if the user specifies 10 as their default, then the control should be automatically positioned at that row when the control is first initialized.

Thanks in advance.

Upvotes: 18

Views: 25699

Answers (4)

Jaywant Khedkar
Jaywant Khedkar

Reputation: 6121

Try this it's working for me , just one line of code .

In Objective-C

   [self.picker selectRow:2 inComponent:0 animated:YES];

In Swift

  picker.selectRow(2, inComponent:0, animated:true)

Hope this will help some one .

Upvotes: 0

TechZen
TechZen

Reputation: 64428

You call selectRow:inComponent:animated: and pass it the index of the row you want selected.

This code causes a UIPickerView to spin through its numbers 0 to 60 before coming to rest on 0.

- (void)viewDidAppear:(BOOL)animated {

    [thePicker selectRow:60 inComponent:0 animated:YES];
    [thePicker reloadComponent:0];
    [thePicker selectRow:60 inComponent:1 animated:YES];
    [thePicker reloadComponent:1];
    [thePicker selectRow:0 inComponent:0 animated:YES];
    [thePicker reloadComponent:0];
    [thePicker selectRow:0 inComponent:1 animated:YES];
    [thePicker reloadComponent:1];
}

In your case, to display row ten you would call something like:

[thePicker selectRow:10 inComponent:0 animated:YES];

Upvotes: 56

Yessine Mahdouani
Yessine Mahdouani

Reputation: 1264

If you are using UITextField with UIPickerView

[self.text_field setInputView:self.picker];

then use this:

self.text_field.text = [_myarray objectAtIndex:10];

Upvotes: 0

Victor Rius
Victor Rius

Reputation: 4734

What you can do, instead of choosing the row, is to make the pickerview find the value that you want. The way is creating a loop to find it in the array and selecting it:

- (void)viewDidAppear:(BOOL)animated{    
    int i = 0;
    for(NSString* number in arrayName)
    {
        if ([stringValue isEqualToString:number]){
            [pickerViewName selectRow:i inComponent:0 animated:YES ];
        }
        i++;
    }
}

Upvotes: 0

Related Questions