从另一个 pickerView 选择项目时隐藏 pickerView 的行
Hide rows of a pickerView when selecting an item from another pickerView
我创建了一个 UIPickerView
使用数组作为我的数据源,我想在第三个组件上选择一个项目后隐藏第四个组件上的一些项目。我该怎么做?
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)]
}
}
您应该更改 numberOfRowsInComponent
e titleForRow forComponent
以便他们考虑第三行的选择。
之后,当第三个组件发生变化时,您只需在最后一个组件上调用 reloadComponent
。
您可以通过以下 SO 问题之一获得更多信息:
- disabling the values in one component of picker based on value selected in other component
- How to change the picker rows based on another picker's selection?
我创建了一个 UIPickerView
使用数组作为我的数据源,我想在第三个组件上选择一个项目后隐藏第四个组件上的一些项目。我该怎么做?
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)]
}
}
您应该更改 numberOfRowsInComponent
e titleForRow forComponent
以便他们考虑第三行的选择。
之后,当第三个组件发生变化时,您只需在最后一个组件上调用 reloadComponent
。
您可以通过以下 SO 问题之一获得更多信息:
- disabling the values in one component of picker based on value selected in other component
- How to change the picker rows based on another picker's selection?