我有两个文本字段,我打算用作pickerviews,并带有相应的输入:
@IBOutlet weak var pickerCountry: UITextField!
@IBOutlet weak var pickerAge: UITextField!
var pickOptionCountry = ["Belgium", "France", "Germany", "Netherlands", "Sweden"]
var pickOptionAge = ["1", "2", "3", "4", "5"]
我创建了一个包含两个可能的文本字段的枚举,并为枚举创建了一个实例:
enum optionsPicker {
case pickerCountry
case pickerAge}
var optionPicked = optionsPicker.pickerTextFieldCountry
在viewDidLoad中,我设置了挑选者视图的所有必需品,并且它适用于单个选择器视图。
但是,当我尝试使用以下开关代码使函数动态化时(为简单起见,我省略了pickerview的其他函数),我只得到pickerCountry的输入。谁能解释我做错了什么?
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
switch optionPicked {
case .pickerCountry:
return pickOptionCountry[row]
case .pickerAge:
return pickOptionAge[row]
}
}
切换功能似乎无法正常工作,因为我只获得了我在optionPicked实例中声明的输入。以下是viewDidLoad代码供您参考:
let pickerView = UIPickerView()
pickerView.delegate = self
pickerView.backgroundColor = UIColor.whiteColor()
pickerView.showsSelectionIndicator = true
pickerCountry.inputView = pickerView
pickerCountry.placeholder = "Country Not Set"
pickerAge.inputView = pickerView
pickerAge.placeholder = "Age Not Set"
答案 0 :(得分:0)
我想我现在明白了这个问题。
我认为你不需要这个案例的枚举。
尝试
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView == self.countryPickerView {
return pickOptionCountry[row]
}else if pickerView == self.agePickerView{
return pickOptionAge[row]
}
return nil
}
其中self.countryPickerView和self.agePickerView是您的选择器视图。我在这里假设你将它们作为属性。
编辑:
在IBOutlets下方添加两个属性。
var countryPickerView = UIPickerView()
var agePickerView = UIPickerView()
并在viewDidLoad()
中初始化它们我想你想拥有一个pickerView并重用它?
我认为这很难。使用两个选择器视图将使您的生活更轻松。