SwiftでUIPickerViewControlの選択した値を取得するにはどうすればよいですか?
私は次のようなものを試しました:
labelTest.text = Spinner1.selectedRowInComponent(0).description
ただし、これは選択したインデックスのみを返します。値が必要です。
これを行う方法を知っている人は誰ですか?
ピッカービューのデリゲートをselfに設定し、この関数をオーバーライドする必要があります
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の配列です
Swift 3:各行の文字列値を選択したいとします
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)
または
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let yearValueSelected = pickerData[row] as String
print(yearValueSelected)
}
これまでのすべての答えは、選択した行を元のデータ配列に簡単に接続できることを前提としています。解決策は、それができればかなり簡単ですが、この質問は、元の配列がすぐに利用できない場合に特に対処します。たとえば、1つの行がタップされると展開するテーブルセルに3つのピッカーがあり、3つの異なる配列が表示されます。
どのピッカー、どのデータ配列、どの行などを把握する代わりに、おそらくカスタムセルのコードで、選択したテキストをピッカー自体から単純に取得できれば、面倒な手間が省けます。
答えができないである場合、それで問題ありません。すべて整理します。しかし、問題はショートカットがあるかどうかです。