Как мне сбросить UIPickerView, когда он связан с inputView TextField? - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть 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 голосов
/ 12 ноября 2018

Как только решением будет реализация метода делегата func textFieldDidBeginEditing(_ textField: UITextField).И затем посмотрите, является ли текстовое поле inputView представлением выбора.Если это так, сбросьте представление средства выбора при необходимости.

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

Если у вас есть несколько текстовых полей, которые используют представление средства выбора, и вы хотите сбросить средство выбора только для некоторых текстовых полей, то добавьте флажок кпосмотрите, является ли textField одним из тех, с которыми вам нужно справиться.

...