По умолчанию первая строка подсвечивается после инициализации UIPickerView. Как выделить конкретную строку или прокрутить к определенной строке программно?
Могу ли я программно прокручивать до нужной строки в UIPickerView?
Ответ 1
Как всегда, это тщательно документировано. Документация Apple для UIPickerView
должна сообщить вам, что метод, который вы, вероятно, хотите, - – selectRow:inComponent:animated:
.
Ответ 2
Если вы хотите вызвать метод делегата pickerView: didSelectRow: inComponent, вы должны называть его вручную:
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)
Ответ 3
Да, это очень легко [picker selectRow:row inComponent:component animated:NO];
Ответ 4
Работа в iOS 9 с XCode 7.3 для изменения времени выполнения данных в представлении выбора, называемом fieldPicker:
// first load your new data to your picker view data source (not shown here...) then load the data into the picker view using it delegate
[self.fieldPicker reloadAllComponents];
// now that the data is loaded, select a row in the picker view through it 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];
Ответ 5
Проверьте, вызываете ли вы метод self.myPickerView.selectRow(0, inComponent: 0, animated: false)
после того, как вы добавили pickerView в качестве подпредставления.
Во-первых, я вызвал метод, прежде чем я добавил pickerView в качестве подпредставления, и он не работал. Поэтому я позвонил потом, и тогда это сработало!
Возможно, это довольно очевидно и не самый умный мой ход, но все же, может быть, у кого-нибудь когда-нибудь возникнет такая же проблема, и я надеюсь, что смогу помочь! :)