Search code examples
iosswiftuipickerview

How to get the String value of selected row in a UIPickerView in Swift 3?


func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    switch pickerView {
    case sexPicker:
        return sex.count
    case agePicker:
        return age.count
    case proPicker:
        return profession.count
    default:
        return 0
    }
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    switch pickerView {
    case sexPicker:
        return sex[row]
    case agePicker:
        return age[row]
    case proPicker:
        return profession[row]
    default:
        return ""
    }
}

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    switch pickerView {
    case sexPicker:
        sexText.text = sexPicker.selectedRow(inComponent: 1) *// This gives only the row value but  need string value*
    case agePicker:
        ageText.text = agePicker.selectedRow(inComponent: 1)
    case proPicker:
        professionText.text = pickerView(proPicker, titleForRow: 0, forComponent: 1)    // Cannot call non-function type uipickerview
    default:
        break
    }
}

Please help me get the string value of selected row of a particular picker view.


Solution

  • It's simple. Please use the data model for it.

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    
        switch pickerView {
        case sexPicker:
            sexText.text = sex[row] 
        case agePicker:
            ageText.text = age[row]
        case proPicker:
            professionText.text = profession[row]
        default:
            break
        }
    
    }