我有一个带有两个组件的选择器视图,每个组件有五行。
在第一个组件中,我有五种车型:丰田,福特,本田等......在第二个组件中,我有五种相关品牌的车型。
当您更改make时,模型应该随之更新。
我遇到的问题是我似乎无法根据1来更新组件2.
以下是代码的快照以及我目前在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 :(得分:0)
当用户从组件0中选择了make时,您需要更新组件1。
实施pickerView:didSelectRow:inComponent:
,然后在那里更新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个Bentley型号导致崩溃,因为你声称你有5个。