with example done custom iphone objective-c cocoa-touch uipickerview

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 } }