web-dev-qa-db-fra.com

Obtenir la valeur sélectionnée d'un UIPickerViewControl dans Swift

Comment puis-je obtenir la valeur sélectionnée d'un UIPickerViewControl dans Swift?

J'ai essayé quelque chose comme ça:

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

Mais cela ne retourne que l'index sélectionné. J'ai besoin de la valeur.

Quelqu'un qui sait comment faire ça?

17
Programmer1994

vous devrez définir le délégué de la vue Sélecteur sur lui-même et remplacer cette fonction 

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

ou

vous pouvez l'utiliser pour extraire selon votre utilisation

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

où pickerViewContent est votre tableau de source de données

47
Omkar Guhilot

Swift 3: supose vous voulez que la valeur de chaîne de chaque ligne sélectionnée

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

        let valueSelected = yourDataSourceArray[row] as String
 }
7
Marcos Reboucas

Swift 4

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

Ou

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

Jusqu'à présent, toutes les réponses supposent que vous puissiez facilement relier la ligne sélectionnée au tableau de données d'origine. La solution est assez facile si vous pouvez le faire, mais la question concerne spécifiquement le cas où le tableau d'origine n'est pas facilement disponible. Par exemple, j'ai 3 sélecteurs dans les cellules de tableau qui se développent lorsqu'une ligne est exploitée et ils affichent 3 tableaux différents.

Cela me permettrait d'éviter beaucoup de problèmes si je pouvais simplement extraire le texte sélectionné du sélecteur lui-même, peut-être dans le code de ma cellule personnalisée, au lieu de devoir déterminer quel sélecteur, quel tableau de données, quelle ligne, etc.

Si la réponse est que vous ne pouvez pas , ce n'est pas grave, je vais tout régler. Mais la question est de savoir s'il existe un raccourci.

0
Wayne Henderson