UIPickerView 在没有数据源的情况下获取选定的值

Posted

技术标签:

【中文标题】UIPickerView 在没有数据源的情况下获取选定的值【英文标题】:UIPickerView get selected value without datasource 【发布时间】:2020-07-19 14:37:45 【问题描述】:

在没有数据源的情况下从 PickerView 获取值的最佳方法是什么?所以我无法从数组中读取值。

当前值只是行号,我需要在用户完成挑选后读取。

func numberOfComponents(in pickerView: UIPickerView) -> Int 
    return 3


func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int 
    if component == 0 
        return 300
     else 
        return 10
    


func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? 
    if component == 0 
        return "\(row)."
     else 
        return "\(row)"
    

【问题讨论】:

【参考方案1】:

您可以使用pickerView.selectedRow(inComponent:)

let firstValue = pickerView.selectedRow(inComponent: 0)
let secondValue = pickerView.selectedRow(inComponent: 1)

两者都只是一个Int 值,表示其各自组件中当前选定的行索引。而且由于您的值是从 0 开始的,因此您可以直接使用这些值。

【讨论】:

【参考方案2】:

你只需添加这个函数:

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

请注意该行从 0 开始

【讨论】:

以上是关于UIPickerView 在没有数据源的情况下获取选定的值的主要内容,如果未能解决你的问题,请参考以下文章

UIPickerView 未使用最新的 JSON 数据重新加载

UIPickerView从中间的选定行开始

在这种情况下,如何重用 UIPickerView 中的视图?

我可以在不按任何选择按钮的情况下从我的 uipickerview 行的值自动更新我的 uitextview 吗?

一个关于 UIPickerView 的 bug

将从核心数据中获取的数据分配给 UIPickerView