使开关功能正常工作

时间:2015-11-28 11:05:56

标签: ios swift enums switch-statement

我有两个文本字段,我打算用作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"

1 个答案:

答案 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并重用它?

我认为这很难。使用两个选择器视图将使您的生活更轻松。