如何设置选择器视图以显示来自多个矩阵选项的数据?
How do I set up a picker view to display data from several matrix options?
我在将使用单个 PickerView 的视图控制器中有 4 个文本字段,但会根据激活的文本字段进行更新(通过编辑开始操作)。我可以从单个测试数组加载数据,但找不到一种方法让选取器视图在预加载了从 Parse 查询的数据的多个数组之间切换。
另外,有没有办法从字符串中引用数组名?例如:在 didSelectRow 函数中用变量替换 "testArray" 并在文本字段激活时设置变量。
谢谢!
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if activeField == 1 {
return fieldNameArray[row]
} else if activeField == 2 {
return taskCategoryArray[row]
} else if activeField == 3 {
return assignedPersonArray[row]
} else if activeField == 4 {
return machineUsedArray[row]
}
//return testArray[row]
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if activeField == 1 {
return fieldNameArray.count
} else if activeField == 2 {
return taskCategoryArray.count
} else if activeField == 3 {
return assignedPersonArray.count
} else if activeField == 4 {
return machineUsedArray.count
}
//return testArray.count
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if activeField == 1 {
fieldNameTextField.text = testArray[row]
} else if activeField == 2 {
taskCategoryTextField.text = testArray[row]
} else if activeField == 3 {
assignedPersonTextField.text = testArray[row]
} else if activeField == 4 {
machineryUsedTextField.text = testArray[row]
}
pickerView.isHidden = true
}
我不明白你问题的第二部分。
但是对于第一部分,您就快完成了,您只需在其中一个文本视图变为活动状态时重新加载选取器视图即可:
pickerView.reloadAllComponents()
我在将使用单个 PickerView 的视图控制器中有 4 个文本字段,但会根据激活的文本字段进行更新(通过编辑开始操作)。我可以从单个测试数组加载数据,但找不到一种方法让选取器视图在预加载了从 Parse 查询的数据的多个数组之间切换。
另外,有没有办法从字符串中引用数组名?例如:在 didSelectRow 函数中用变量替换 "testArray" 并在文本字段激活时设置变量。
谢谢!
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if activeField == 1 {
return fieldNameArray[row]
} else if activeField == 2 {
return taskCategoryArray[row]
} else if activeField == 3 {
return assignedPersonArray[row]
} else if activeField == 4 {
return machineUsedArray[row]
}
//return testArray[row]
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if activeField == 1 {
return fieldNameArray.count
} else if activeField == 2 {
return taskCategoryArray.count
} else if activeField == 3 {
return assignedPersonArray.count
} else if activeField == 4 {
return machineUsedArray.count
}
//return testArray.count
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if activeField == 1 {
fieldNameTextField.text = testArray[row]
} else if activeField == 2 {
taskCategoryTextField.text = testArray[row]
} else if activeField == 3 {
assignedPersonTextField.text = testArray[row]
} else if activeField == 4 {
machineryUsedTextField.text = testArray[row]
}
pickerView.isHidden = true
}
我不明白你问题的第二部分。
但是对于第一部分,您就快完成了,您只需在其中一个文本视图变为活动状态时重新加载选取器视图即可:
pickerView.reloadAllComponents()