iphone - example - Obtener fila seleccionada en UIPickerView para cada componente
uipickerview done button (2)
Entonces, en tu método de acción con botones, puedes hacer algo como esto:
- (IBAction) showAlert {
NSUInteger numComponents = [[myPickerView datasource] numberOfComponentsInPickerView:myPickerView];
NSMutableString * text = [NSMutableString string];
for(NSUInteger i = 0; i < numComponents; ++i) {
NSUInteger selectedRow = [myPickerView selectedRowInComponent:i];
NSString * title = [[myPickerView delegate] pickerView:myPickerView titleForRow:selectedRow forComponent:i];
[text appendFormat:@"Selected item /"%@/" in component %lu/n", title, i];
}
NSLog(@"%@", text);
}
Esta sería la forma formal absoluta de recuperar información (utilizando los métodos de fuente de datos y delegación apropiados), pero podría ser más fácil (dependiendo de su configuración), simplemente tomar la fila seleccionada y luego extraer la información de su modelo directamente. , en lugar de pasar por el método del delegado.
Tengo un UIPickerView
con 3 componentes NSMutableArrays
con 2 NSMutableArrays
(2 componentes tienen la misma matriz).
Un tutorial dice:
//PickerViewController.m
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
NSLog(@"Selected Color: %@. Index of selected color: %i", [arrayColors objectAtIndex:row], row);
}
Pero quiero mostrar la fila seleccionada para cada componente en un UIAlertView
después de que el usuario toque un UIButton .
¿Hay alguna forma de hacer esto? ¿O debo simplemente usar 3 UILabels
invisibles como buffer?
Gracias por adelantado.
Versión Swift 3:
var value = ""
for i in 0..<numberOfComponents {
let selectedRow = pickerView.selectedRow(inComponent: i)
if let s = pickerView.delegate?.pickerView!(pickerView, titleForRow: selectedRow, forComponent: i) {
value += s
}
}