如何根据第一个 pickerView 的选择更改我的第二个 pickerView 数组

Posted

技术标签:

【中文标题】如何根据第一个 pickerView 的选择更改我的第二个 pickerView 数组【英文标题】:How to change my second pickerView's array based on the selection from the 1st pickerView 【发布时间】:2019-07-17 13:51:37 【问题描述】:

我有两个pickerView,即pickerView1 = car_makepickerView2 = car_model

如果我选择car_make = Kia,我希望pickerView2 显示模型数组[Rio, Venga, Ceed],如果我从pickerView1 中选择car_make=Ford,那么我希望pickerView2 显示模型数组[Mondeo, Ka, Focus]

我已经尝试编辑didSelectRow 函数,并且成功了

if pickerView == carMakePicker 
    if carMake[row] == "Kia"
        // How to assign new array?
    

但是我不知道如何将新数组分配给 carModelPicker

【问题讨论】:

您能向我们展示更多您的代码吗?您的数据源中有什么?您如何存储汽车品牌和车型? 【参考方案1】:

你需要

struct Car 
    let name:String
    let models:[String]

然后像这样填充数组

cars = [Car(name: "ppp", models: ["1","2","3"])]

picker1 的行数为cars.countpicker2 的行数为cars[selected].models.count

在哪里

var selected = 0 // suppose you will show models of first car initially 

当用户点击didSelect做时

if pickerView == picker1 
   selected = row
   picker2.reloadAllComponents()  

【讨论】:

非常感谢!这更有意义,现在有效。现在唯一的事情是,当我选择不同的 car_Make 时,pickerView2 现在专注于底部条目而不是顶部,但这是我接下来要更仔细研究的事情

以上是关于如何根据第一个 pickerView 的选择更改我的第二个 pickerView 数组的主要内容,如果未能解决你的问题,请参考以下文章

如何根据之前的选择器视图选择更新PickerView 数据

如何从pickerview更改颜色选择的拾取值?

如何从两个中清除一个pickerView?

如何更改 Uipickerview 位置?

具有多个组件的动态 PickerView:索引超出范围

UIPickerView 改变框架的大小和位置