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?

War es hilfreich?

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! :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top