Reputation: 559
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
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
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
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
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