I've created a UIPickerView
using an array as my data source, I'd like to hide some items on the fourth component after I've selected an item on the third one. How can I do that?
class ViewControllerEspessuras: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
var data = [["1.50","1.60","1.67","1.74"],
["-10.00 Esf.","-9.00 Esf.","-8.00 Esf.","-7.00 Esf.","-6.00 Esf.","-5.00 Esf.","-4.00 Esf.","-3.00 Esf.","-2.00 Esf.","-1.00 Esf.","Plano","+1.00 Esf.","+2.00 Esf.","+3.00 Esf.","+4.00 Esf.","+5.00 Esf.","+6.00 Esf.","+7.00 Esf.","+8.00 Esf.","+9.00 Esf.","+10.00 Esf."],
["1.50","1.60","1.67","1.74"],
["-10.00 Esf.","-9.00 Esf.","-8.00 Esf.","-7.00 Esf.","-6.00 Esf.","-5.00 Esf.","-4.00 Esf.","-3.00 Esf.","-2.00 Esf.","-1.00 Esf.","Plano","+1.00 Esf.","+2.00 Esf.","+3.00 Esf.","+4.00 Esf.","+5.00 Esf.","+6.00 Esf.","+7.00 Esf.","+8.00 Esf.","+9.00 Esf.","+10.00 Esf."]]
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 4
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return data[component].count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return data[component][row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let picker1 = data[0][pickerView.selectedRowInComponent(0)]
let picker2 = data[1][pickerView.selectedRowInComponent(1)]
let picker3 = data[2][pickerView.selectedRowInComponent(2)]
let picker4 = data[3][pickerView.selectedRowInComponent(3)]
}
}
You should alter numberOfRowsInComponent
e titleForRow forComponent
so they take the selection of the third row into account.
After that you can simply call reloadComponent
on the last component when the third one is changed.
You can get more info in one of the following SO questions: