Как я могу установить selectRow на UIPickerView, который присоединен к UITextField - PullRequest
0 голосов
/ 14 июня 2019

У меня есть UITextField, к которому я прикрепил UIPickerView.

В моем UIPickerView есть элементы

var teeUsed = ["Yellow","Blue","Red","Green"]

мои текущие настройки в UITextField - красные

Когда я вхожу в UITextField, у меня появляется всплывающее окно с желтым в качестве первого выбора. Я хочу КРАСНЫЙ на первый выбор. Если я вращаюсь все хорошо, если я просто нажимаю на другое поле, оно не меняется на Желтый.

Я пытался редактирование началось, Touch Down, Primary Action Triggered, но все делается до того, как заполнитель заполнен, поэтому происходит сбой, если я пытаюсь выбрать строку

1 Ответ

0 голосов
/ 14 июня 2019
enum AvailableColors: Int {
    case yellow = 0
    case blue = 1
    case red = 2
    case green = 3

    var colorByIndex: UIColor {
        switch (self) {
        case .yellow:
            return .yellow
        case .blue:
            return .blue
        case .red:
            return .red
        case .green:
            return .green
        }
    }
}

class ViewController: UIViewController, UIPickerViewDelegate {
    var picker : UIPickerView?
    var selectedIndex = 0

   override func viewDidLoad() {
       super.viewDidLoad()
       //1.init your picker with data.
       // self.picker = UIPickerView()...
       // self.picker.delegate = self
       //2.select predefined index
       self.picker?.selectRow(self.selectedIndex, inComponent: 0, animated: false)

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
       self.selectedIndex = row
       self.textField.backgroundColor = AvailableColors(rawValue: row)?.colorByIndex
    }
}
...