2011-02-04 9 views

Respuesta

60

Como siempre, esto se documenta a fondo. La documentación de Apple para UIPickerView debe decirle que el método que probablemente desee es – selectRow:inComponent:animated:.

+6

Si alguien no puede encontrarlo en Xamarin.iOS (MonoTouch) se llama 'Select()' 'no SelectRow()' como si pensaría. –

+0

Para mí llamar al método '- selectRow: inComponent: animado:' no fue suficiente, tuve que llamar al delegado '-pickerView: didSelectRow: inComponent:' programmatically también. – fruechtemuesli

+0

Derecha; programar programáticamente la fila seleccionada no invoca el método de delegado. Si desea actuar en respuesta a todos los cambios de selección, debe llamarlo usted mismo. – warrenm

33

sí, es muy fácil [picker selectRow:row inComponent:component animated:NO];

21

Si desea activar de delegado método pickerView: didSelectRow: inComponent, debe llamar de forma manual:

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) 
2

Trabajando en iOS 9 con XCode 7.3, para hacer cambios en tiempo de ejecución a los datos en una vista selector de llamada 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]; 
Cuestiones relacionadas