Getting selected value of a UIPickerViewControl in Swift

后端 未结 4 1175
后悔当初
后悔当初 2021-02-05 03:05

How can I get the selected value of a UIPickerViewControl in Swift?

I tried something like this:

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


        
相关标签:
4条回答
  • All the answers so far presuppose you can easily connect the selected row back to the original data array. The solution is fairly easy if you can do that, but the question specifically addresses the case where the original array is not readily available. For instance I have 3 pickers in table cells that expand when one row is tapped, and they show 3 different arrays.

    It would save me a lot of trouble if I could simply retrieve the selected text from the picker itself, perhaps in the code for my custom cell, instead of having to figure out which picker, which data array, which row and so on.

    If the answer is that you can't, that's OK, I'll sort it all out. But the question is whether there's a shortcut.

    0 讨论(0)
  • 2021-02-05 03:43

    you will have to set the picker view delegate to self and override this function

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

    or

    you can use this to extract as per your usage

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

    where pickerViewContent is your array of dataSource

    0 讨论(0)
  • 2021-02-05 04:00

    Swift 3: supose you want the String value of each row selected

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    
            let valueSelected = yourDataSourceArray[row] as String
     }
    
    0 讨论(0)
  • 2021-02-05 04:05

    Swift 4

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

    Or

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent  component: Int) {
        let yearValueSelected = pickerData[row] as String
        print(yearValueSelected)
    }
    
    0 讨论(0)
提交回复
热议问题