2013-09-03 1 views
8

so che l'UIPickerView ha questo metodo:iOS UIPickerView come ottenere la riga selezionata al di fuori del metodo delegato

- (void)pickerView:(UIPickerView *)pickerView 
     didSelectRow:(NSInteger)row 
     inComponent:(NSInteger)component 

Ma all'interno di questo metodo, voglio ottenere la riga selezionata di altri componenti. Come diavolo posso farlo?

+0

https://developer.apple.com/library/ios/documentation/uikit/reference/UIPickerView_Class/Reference/UIPickerView#//apple_ref/occ/instm/UIPickerView/selectedRowInComponent: – Kevin

risposta

26

È possibile ottenere il numero di riga selezionato ovunque utilizzando il metodo di UIPickerView.

Tale come

NSString *YourselectedTitle = [self.yourArrayName objectAtIndex:[self.yourPickerName selectedRowInComponent:0]]; 
NSLog(@"%@", YourselectedTitle); 
+0

funziona. Ma non capisco: ho digitato "row0 = [self.picker sel" e non è apparso nessun suggerimento! solo un metodo "select" che non ha nulla a che fare con UIPickerView; c'è qualcosa di sbagliato nel mio Xcode? –

+0

@BogdanAlexandru - metti qui il tuo codice lavoro con il codice sopra, funziona molto bene per me :) – iPatel

+0

funziona! il problema è un altro: mentre scrivevo "sel" XCode avrebbe dovuto mostrarmi il suggerimento "selectedRowInComponent", ma non lo fece! –

4

vecchia questione, ma se qualcuno come me sta lavorando con Swift 2.0 ora la risposta è

let row = self.myPicker.selectedRowInComponent(0) 
let value = myArray[row] 

ho scritto 0 a valore del componente, perché il mio picker ha un solo componente, ma potrebbe avere più di uno come DatePicker con Date and Time

È possibile utilizzare questo metodo anche al di fuori della funzione di cui si stava parlando se si mantiene un n uscita del vostro pickerView