如何以编程方式创建多个选择器
问题描述:
我正在尝试为每个选定的文本框创建一个单独的选择器视图。到目前为止,我所得到的最接近的是每个文本框都有相同的pickerview,它们需要自己单独的项目列表进行选择。如何以编程方式创建多个选择器
class MainViewController: UIViewController, UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate {
var dogBreedPickerArray = ["German Shepherd", "Huskie", "cray cray"]
var catBreedPickerArray = ["savanna", "cheetoh", "bengal"]
var maleFemalePickerArray = ["Male", "Female"]
var dogBreedPicker = UIPickerView()
var dogBreedPicker = UIPickerView()
var catBreedPicker = UIPickerView()
var maleFemalePicker = UIPickerView()
@IBOutlet var dogBreedTextBox: UITextField!
@IBOutlet var catBreedTextBox: UITextField!
@IBOutlet var maleFemaleTextBox: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
dogBreedPicker.delegate = self
dogBreedPicker.dataSource = self
dogBreedTextBox.inputView = dogBreedPicker
dogBreedTextBox.delegate = self
}
// dog picker functions
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return dogBreedPickerArray.count
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
petBreedTextBox.text = dogBreedPickerArray[row]
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return dogBreedPickerArray[row]
}
}
答
它只是一个例子可能是它帮助你 选择任何文本字段ASIGN文本字段标签选择器后并重新加载组件。
// variable
var heightInch:[Int] = [Int]()
var heightfeet:[Int] = [Int]()
var heightCms:[Int] = [Int]()
delegate methods
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
if picker.tag == 1{
return 2
}else{
return 1
}
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if picker.tag == 1{
switch component {
case 0:
return heightfeet.count
default:
return heightInch.count
}
}else{
return heightCms.count
}
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if picker.tag == 1{
switch component {
case 0:
return String(heightfeet[row])
default:
return String(heightInch[row])
}
}else{
return String(heightCms[row])
}
你可以在函数中使用if语句,而不是仅仅为dogBreedPicker做。就像组件数量而不是仅返回1;如果dogBreedPicker - 返回1,否则如果catBreedPicker返回任何你想要的。为所有你所拥有的func做到这一点。对于每个文本字段,请确保您使用您想要的选取器。 – Douglas
使用单个选择器并在textfld使用的基础上加载内容if else else或切换到加载选择器使用标签上的内容以检测您必须加载到选取器上的内容并重新加载选取器视图的组件。 –