Ios UIPickerView重新加载不工作

Ios UIPickerView重新加载不工作,ios,swift,uipickerview,Ios,Swift,Uipickerview,我有一个选择器视图,其中有两个组件,每个组件中有五行 在第一部分中,我有五种品牌的汽车:丰田、福特、本田等。。。在第二部分中,我有五个相关品牌的模型 当您更改make时,模型应该随之更新 我的问题是,我似乎无法让组件2根据1进行更新 下面是代码的快照,以及我目前在sim卡上的代码 var keyArray: [String] = ["Nissan","Honda","Toyota","Ferrari","Bentley"] var makeIndex = 0 var carDict : [Str

我有一个选择器视图,其中有两个组件,每个组件中有五行

在第一部分中,我有五种品牌的汽车:丰田、福特、本田等。。。在第二部分中,我有五个相关品牌的模型

当您更改make时,模型应该随之更新

我的问题是,我似乎无法让组件2根据1进行更新

下面是代码的快照,以及我目前在sim卡上的代码

var keyArray: [String] = ["Nissan","Honda","Toyota","Ferrari","Bentley"]
var makeIndex = 0
var carDict : [String :[String]] = ["Nissan" : ["Sentra","Xterra","Versa","Altima","Maxima"], "Honda": ["Accord","Civic","Odyssey","Civic SE", "Accord LE"],"Toyota":["Corolla","Camry","4 Runner","Corolla LE","Camry SE"],"Ferrari": ["La Ferrari", "Modena", "Testarrosa","360 Spyder", "California"], "Bentley": ["Arnage","Continental","Flying Spur","Continental GT"]]

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return 5
}

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
    return 2

}
@IBOutlet weak var pickerLabel: UILabel!
@IBOutlet weak var speedLabel: UILabel!
override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    speedLabel.text = String(vehicleInst.speed)
}

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {

    switch component {

    case 0:

        if component == 0 {

            pickerView.reloadComponent(1)
            return keyArray[row]
        }
        return keyArray[row];



    case 1:


        var modelarray = carDict[keyArray[makeIndex]]

return modelarray![row];

    default:

        return "nothing";
    }



}

当用户从组件0中选择make时,您需要更新组件1。 实现
pickerView:didSelectRow:incomonent:
,然后在那里更新您的
makeIndex

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    if component == 0 {
        makeIndex = row
        pickerView.reloadComponent(1)
    }
}
以下是对
pickerView:titleForRow:forComponent:

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {

    switch component {

    case 0:

        return keyArray[row]

    case 1:

        var modelarray = carDict[keyArray[makeIndex]]

        return modelarray![row]

    default:

        return "nothing"
    }
}

顺便说一句,您只有4款宾利车型会导致崩溃,因为您声称自己有5款。

请添加出现问题的代码,Hanks甚至没有意识到。