使用结构根据从第一个中选择的筛选来过滤第二个和第三个选取器视图



我搜索了(并使用静态数组找到了一些(,但找不到与我尝试使用 JSON 填充结构执行的操作相关的任何内容。

我是 Swift 和 StackExchange 的新手,所以如果我错过了,请告诉我!

我有三个结构正在从 JSON 代码填充。注意:部门名称与其他两个结构中的部门相同

struct Dept: Decodable {
let departmentName: String 
}
struct Company: Decodable {
let companyName: String
let Department: String
}
struct Spread: Decodable {
let spreadName: String
let spreadType: String
let Department: String
}

这些加载在 viewDidLoad 上。数组(ish(形式的数据示例为:

Department = "Department 1"
Company = ["Company 1":"Department 1","Company 2":"Department 2"]
Spread = ["Spread 1":"Department 1","Spread 2 ":"Department 2"]

我当前用于 PickerView 函数的代码:

public func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    var countRows : Int = dep.count
    if pickerView == companyPicker {
        countRows = self.company.count
    }
    else if pickerView == spreadPicker {
        countRows = self.spread.count
    }
    else if pickerView == incidentPicker {
        countRows = self.incident.count
    }
    return countRows
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    if pickerView == deptPicker {
        let titleRow = dep[row].departmentName
        return titleRow
    }
    else if pickerView == companyPicker {
        let titleRow = company[row].companyName
        return titleRow
    }
    else if pickerView == spreadPicker {
        let titleRow = spread[row].spreadName
        return titleRow
    }
    else if pickerView == incidentPicker {
        let titleRow = incident[row].incidentTypeName
        return titleRow
    }
    return ""
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    if pickerView == deptPicker {
        self.deptartmentTextField.text = self.dep[row].departmentName
        self.deptartmentTextField.resignFirstResponder()
    }
    else if pickerView == companyPicker {
        self.companyTextField.text = self.company[row].companyName
        self.companyTextField.resignFirstResponder()
    }
    else if pickerView == spreadPicker {
        self.spreadTextField.text = self.spread[row].spreadName
        self.spreadTextField.resignFirstResponder()
    }
    else if pickerView == incidentPicker {
        self.incidentTextField.text = self.incident[row].incidentTypeName
        self.incidentTextField.resignFirstResponder()
    }
}

我想我最大的问题是是否有办法根据部门选择器过滤公司和价差选择器。

为了解决这个问题,我添加了两个函数来过滤第一个部门选取器中的数据。我将这些添加到我的didSelectRow选择器函数中。然后,我在过滤后重新加载了第二个和第三个选择器。

相关内容

最新更新