Can I programmatically scroll to a desired row in UIPickerView?
-
28-10-2019 - |
Frage
By default the first row is highlighted after initializing the UIPickerView. How do i highlight a particular row or scroll to particular row programmatically?
Lösung
As always, this is thoroughly documented. The Apple documentation for UIPickerView
should tell you that the method you probably want is – selectRow:inComponent:animated:
.
Andere Tipps
If you want to trigger delegate's method pickerView:didSelectRow:inComponent, you should call it manually:
Obj-C
[self.myPickerView selectRow:0 inComponent:0 animated:NO];
[self pickerView:self.myPickerView didSelectRow:4 inComponent:0];
Swift
self.myPickerView.selectRow(0, inComponent: 0, animated: false)
self.pickerView(self.myPickerView, didSelectRow: 0, inComponent: 0)
Yes, it's very easy [picker selectRow:row inComponent:component animated:NO];
Working in iOS 9 with XCode 7.3, to make runtime changes to data in a picker view called fieldPicker:
// first load your new data to your picker view's data source (not shown here...) then load the data into the picker view using it's delegate
[self.fieldPicker reloadAllComponents];
// now that the data is loaded, select a row in the picker view through it's delegate
[self.fieldPicker selectRow:([self.theFields count] - 1) inComponent:0 animated:NO];
// retrieve the row selected in the picker view to use in setting data from your data source in textboxes etc.
long row = (long)[self.fieldPicker selectedRowInComponent: 0];
Check if you call the method self.myPickerView.selectRow(0, inComponent: 0, animated: false)
after you added the pickerView as a subview.
First, I called the method before I added the pickerView as a subview and it did not work. Therefore, I called it afterwards and then it worked!
Probably pretty obvious and not my smartest move but still maybe someone has the same problem some day and I hope I could help! :)