Получение выбранного значения 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 разных массива.
Это избавило бы меня от многих проблем, если бы я мог просто извлечь выделенный текст из самого сборщика, возможно, в код для моей настраиваемой ячейки, вместо того, чтобы выяснить, какой сборщик, какой массив данных, какая строка и т.д. на.
Если ответ заключается в том, что вы не можете, это нормально, я все разобраю. Но вопрос в том, есть ли ярлык.