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?
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
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
}
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)
}
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.