将UIPickerView与TextField的inputView关联时,如何重置?

时间:2018-11-12 18:23:28

标签: ios swift uipickerview

我有一个UITextField,其inputView设置为等于UIPickerView

let thePicker = UIPickerView()
txtCategory.inputView = thePicker
thePicker.delegate = self

我为选择器提供了这些功能

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView( _ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return categoryList.count
}

func pickerView( _ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return categoryList[row]
}

func pickerView( _ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    txtCategory.text = categoryList[row]
}

如何在按下按钮后将选择器设置回0索引?我认为这段代码可以完成myPicker.selectRow(0, inComponent: 0, animated: false)的工作,我只是不知道我的选择器控件的名字,因为我将文本字段的输入视图设置为与选择器相等。

1 个答案:

答案 0 :(得分:1)

一次解决方案是实施func textFieldDidBeginEditing(_ textField: UITextField)委托方法。然后查看文本字段的inputView是否为选择器视图。如果是这样,请根据需要重置选择器视图。

func textFieldDidBeginEditing(_ textField: UITextField) {
    if let picker = textField.inputView as? UIPickerView {
        picker.selectRow(0, inComponent: 0, animated: false)
    }
}

如果您有多个使用选择器视图的文本字段,而只想重置某些文本字段的选择器,则添加检查以查看textField是否是您需要处理的文本之一