2014-11-28 10 views
7

Provo a selezionare una riga nel mio PickerView ma non funziona. Rimane in prima fila.UIPickerView selectRow non funziona

Ecco il mio codice:

@IBOutlet weak var pickerView: UIDatePicker! 

func numberOfComponentsInPickerView(pickerView: UIPickerView!) -> Int 
{ 
    return 1 
} 

func pickerView(pickerView: UIPickerView!, numberOfRowsInComponent component: Int) -> Int 
{ 
    return 10 
} 

func pickerView(pickerView: UIPickerView!, titleForRow row: Int, forComponent component: Int) -> String!{ 
    return String(row + 1) 
} 


//In viewDidLoad 
pickerView.selectRow(6, inComponent: 0, animated: true) 

Il pickerView sta lavorando bene si mostra da 1 a 10, ma il selectRow non lo fa opere.

Dovrebbe selezionare la sesta riga ma rimane sulla prima.

+0

Controlla se il tuo 'IBOutlet' è legato correttamente – zisoft

+0

BTW: Non è viewDidLoad un po 'troppo presto dal punto di vista dell'architettura ..? Probabilmente sarebbe meglio selezionare la riga su viewWillAppear o viewDidAppear. Penso che il tuo codice possa ora avere un ordine invalido, hai controllato quello che viene chiamato 1st? – Vive

+0

Ho ricontrollato che IBOutlet sia correttamente collegato e sì lo è. Inoltre ho provato a cambiare viewDidLoad con viewWillAppear ma ancora non funziona –

risposta

15

Mentre si trova all'interno del metodo viewDidLoad, il selettore è vuoto. Dal momento che non c'è un sesto elemento da raccogliere, non lo sceglie.

È possibile eseguire questa operazione se si ritarda l'esecuzione della chiamata selezionata fino al termine del caricamento dei dati. Probabilmente un ciclo sarà sufficiente.

Prima di tutto, provare a spostare la selezione su viewDidAppear.

Buona fortuna!

+0

Grazie funziona! –

+2

Felice di sentirlo. Tieni presente che, mentre nel metodo viewDidLoad, numberOfRowsInComponent non è stato chiamato, né titleForRow. Ecco perché il raccoglitore è ancora vuoto. Dopo tutto è stato solo caricato. –