【发布时间】:2017-05-12 04:25:25
【问题描述】:
我的目标是在一个 viewController 上拥有 3 个pickerView。每个pickerView 将根据以前保存的设置列出不同的数据源,这些设置是从数据库中提取的。我已经根据使用如下所示的 switch 语句从数据库中提取的值设置了数据源。
在确实加载的视图中,连同我设置的选择器的代表,我有:
switch firstValuePulled {
case "Animals":
var pickerNumber1 = [["Cat", "Dog", "Bird", Fish],["1","2","3","4","5","6"]]
case "Sports":
var pickerNumber1 = [["Basketball", "Hockey", "Baseball", "Tennis", "Football"],["1","2","3","4","5","6"]]
default:
var pickerNumber1 = [["Apple", "Orange", "Peach"],["1","2","3","4","5","6"]]
}
switch second ValuePulled {
case "Animals":
var pickerNumber2 = [["Cat", "Dog", "Bird", Fish],["1","2","3","4","5","6"]]
case "Sports":
var pickerNumber2 = [["Basketball", "Hockey", "Baseball", "Tennis", "Football"],["1","2","3","4","5","6"]]
default:
var pickerNumber2 = [["Apple", "Orange", "Peach"],["1","2","3","4","5","6"]]
}
switch thirdValuePulled {
case "Animals":
var pickerNumber1 = [["Cat", "Dog", "Bird", Fish],["1","2","3","4","5","6"]]
case "Sports":
var pickerNumber1 = [["Basketball", "Hockey", "Baseball", "Tennis", "Football"],["1","2","3","4","5","6"]]
default:
var pickerNumber1 = [["Apple", "Orange", "Peach"],["1","2","3","4","5","6"]]
}
对于选择器委托,错误显示在“使用未解析的标识符'pickerNumber1'”,“使用未解析的标识符'pickerNumber2'”等下方。可能是switch语句没有正确执行,因此委托没有值来显示选择器?
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 2
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if (pickerView.tag == 1){
return pickerNumber1[component].count;
} else if (pickerView.tag == 2){
return pickerNumber2[component].count;
} else {
return pickerNumber3[component].count;
}
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
if (pickerView.tag == 1){
return pickerNumber1[component][row]
} else if (pickerView.tag == 2){
return pickerNumber2[component][row]
} else {
return pickerNumber3[component][row]
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if (pickerView.tag == 1){
eventOneValue = pickerNumber1[0][pickerView.selectedRow(inComponent: 0)]
eventOneNumber = pickerView.selectedRow(inComponent: 1) + 1
print(eventOneValue)
} else if (pickerView.tag == 2) {
eventTwoValue = pickerNumber2[0][pickerView.selectedRow(inComponent: 0)]
eventTwoNumber = pickerView.selectedRow(inComponent: 1) + 1
print(eventTwoValue)
} else {
eventThreeValue = pickerNumber3[0][pickerView.selectedRow(inComponent: 0)]
eventThreeNumber = pickerView.selectedRow(inComponent: 1) + 1
print(eventThreeValue)
}
}
【问题讨论】:
标签: swift switch-statement uipickerview