2014-10-31 14 views
11

Wie kann ich den ausgewählten Wert eines UIPickerViewControl in Swift abrufen?Abrufen des ausgewählten Werts eines UIPickerViewControl in Swift

Ich habe versucht, so etwas wie diese:

labelTest.text = Spinner1.selectedRowInComponent(0).description 

Aber das gibt nur den ausgewählten Index. Ich brauche den Wert.

Wer weiß, wie man das macht?

+2

Wenn Sie nicht wissen, welcher Wert bei Index x ist, wer sonst? Sie haben den Picker mit der Datenquelle gefüllt, also müssen Sie wissen, was drin ist. –

+0

lassen Sie selectedValue = rolePicker.selectedRowInComponent (0) gibt mir einen Wert. Lassen Sie außerdem selectedValue = rolePicker.selectedRowInComponent (0) .hashValue Ihnen auch etwas Nützliches geben. –

Antwort

33

Sie den Picker Ansicht Delegaten selbst gesetzt haben, und überschreiben diese Funktion

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 
    { 
     // use the row to get the selected row from the picker view 
     // using the row extract the value from your datasource (array[row]) 
    } 

oder

Sie können diese nach Ihrer Verwendung extrahieren

var selectedValue = pickerViewContent[pickerView.selectedRowInComponent(0)] 

wo pickerViewContent ist Ihr Array von dataSource

+0

Ich verstehe die letzte Methode, aber wie kann ich mein Array von dataSource retreive? – Programmer1994

+0

Wenn Sie die Datenquelle für die Auswahlansicht festgelegt haben, müssen Sie sie in derselben Klasse festgelegt haben. –

5

Swift 3: nehme an Sie den String-Wert jedes

ausgewählten Zeile wollen
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 

     let valueSelected = yourDataSourceArray[row] as String 
} 
3

Swift 4

let selectedYearPicker = pickerData[yearPicker.selectedRow(inComponent: 
print(selectedYearPicker) 

Oder

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    let yearValueSelected = pickerData[row] as String 
    print(yearValueSelected) 
} 
0

die Antworten so weit Alle voraussetzen Sie kann die ausgewählte Zeile einfach mit dem ursprünglichen Datenarray verbinden. Die Lösung ist ziemlich einfach, wenn Sie das tun können, aber die Frage adressiert speziell den Fall, in dem das ursprüngliche Array nicht ohne weiteres verfügbar ist. Zum Beispiel habe ich 3 Picker in Tabellenzellen, die sich erweitern, wenn eine Zeile angetippt wird, und sie zeigen 3 verschiedene Arrays.

Es würde mir eine Menge Ärger ersparen, wenn ich einfach den ausgewählten Text aus dem Picker selbst abrufen könnte, vielleicht im Code für meine benutzerdefinierte Zelle, anstatt herausfinden zu müssen, welcher Picker, welches Datenarray, welche Zeile und bald.

Wenn die Antwort ist, dass Sie können nicht, das ist in Ordnung, ich werde alles aussortieren. Aber die Frage ist, ob es eine Abkürzung gibt.

+0

Macht nichts. Die Rückkehr in die ausgewählte Zeile des Eingabedatenfelds des Pickers war einfacher als ich dachte. Keine Notwendigkeit für eine Verknüpfung, auch wenn es eine gibt. –

Verwandte Themen