Получение выбранного значения UIPickerViewControl в Swift

Как я могу получить выбранное значение UIPickerViewControl в Swift?

Я пробовал что-то вроде этого:

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

Но это возвращает только выбранный индекс. Мне нужно значение.

Кто знает, как это сделать?

Ответ 1

вам нужно будет установить делегат представления выбора для себя и переопределить эту функцию

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

или

вы можете использовать его для извлечения в соответствии с вашим использованием

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

где pickerViewContent является вашим массивом dataSource

Ответ 2

Swift 3: предположим, что вы хотите, чтобы значение String каждой выбранной строки

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)

Или

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

Ответ 4

Все ответы до сих пор предполагают, что вы можете легко подключить выбранную строку к исходному массиву данных. Решение довольно просто, если вы можете это сделать, но вопрос конкретно касается случая, когда исходный массив недоступен. Например, у меня есть 3 сборщика в ячейках таблицы, которые расширяются при прослушивании одной строки, и они показывают 3 разных массива.

Это избавило бы меня от многих проблем, если бы я мог просто извлечь выделенный текст из самого сборщика, возможно, в код для моей настраиваемой ячейки, вместо того, чтобы выяснить, какой сборщик, какой массив данных, какая строка и т.д. на.

Если ответ заключается в том, что вы не можете, это нормально, я все разобраю. Но вопрос в том, есть ли ярлык.