web-dev-qa-db-ja.com

SwiftでUIPickerViewControlの選択値を取得

SwiftでUIPickerViewControlの選択した値を取得するにはどうすればよいですか?

私は次のようなものを試しました:

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

ただし、これは選択したインデックスのみを返します。値が必要です。

これを行う方法を知っている人は誰ですか?

20
Programmer1994

ピッカービューのデリゲートを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の配列です

60
Omkar Guhilot

Swift 3:各行の文字列値を選択したいとします

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)

または

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

これまでのすべての答えは、選択した行を元のデータ配列に簡単に接続できることを前提としています。解決策は、それができればかなり簡単ですが、この質問は、元の配列がすぐに利用できない場合に特に対処します。たとえば、1つの行がタップされると展開するテーブルセルに3つのピッカーがあり、3つの異なる配列が表示されます。

どのピッカー、どのデータ配列、どの行などを把握する代わりに、おそらくカスタムセルのコードで、選択したテキストをピッカー自体から単純に取得できれば、面倒な手間が省けます。

答えができないである場合、それで問題ありません。すべて整理します。しかし、問題はショートカットがあるかどうかです。

0
Wayne Henderson