2014-10-31 77 views
11

如何在Swift中獲取UIPickerViewControl的選定值?在Swift中獲取UIPickerViewControl的選定值

我想是這樣的:

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

但這僅返回選定的指數。我需要價值。

任何人都知道如何做到這一點?

+2

如果你不知道在索引x處有什麼價值,還有誰?你已經用數據源填充了選擇器,所以你必須知道里面是什麼。 – 2014-10-31 12:14:17

+0

let selectedValue = rolePicker.selectedRowInComponent(0)給了我一個值。另外,讓selectedValue = rolePicker.selectedRowInComponent(0).hashValue也可能會給你一些用處。 – 2016-08-23 22:35:23

回答

33

你將不得不設置選擇器視圖授人以自我和超越此功能

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是你的一系列數據來源

+0

我瞭解最後一種方法,但我如何檢索我的dataSource數組? – Programmer1994 2014-10-31 13:21:25

+0

您在哪裏設置了選取器視圖的數據源,您必須將其設置在同一個類中。 – 2014-11-03 12:02:44

5

斯威夫特3: supose你要選擇每行的字符串值

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

     let valueSelected = yourDataSourceArray[row] as String 
} 
3

斯威夫特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) 
} 
0

所有的答案到目前爲止前提你可以輕鬆地將選定的行連接回原始數據陣列。如果可以的話,解決方案相當容易,但是這個問題特別針對原始數組不可用的情況。例如,我在表格單元格中有3個拾取器,當單擊一行時會展開,並顯示3個不同的陣列。

如果我可以簡單地從picker本身檢索選定的文本,也許在我的自定義單元的代碼中,而不必找出哪個選擇器,哪個數據數組,哪個行和哪個數組等等。

如果答案是你不能,沒關係,我會整理一下。但問題是是否有捷徑。

+0

沒關係。回到選擇器的輸入數據數組的選定行比我想象的要容易。即使有捷徑,也不需要捷徑。 – 2018-01-14 16:07:09