UIPickerView сообщает о неправильной строке - PullRequest
0 голосов
/ 29 апреля 2018

Когда я пересекаю этот UIPickerView сверху вниз, строка сообщается правильно для каждого элемента. Однако, перебирая UIPickerView снизу вверх, при нажатии «Вариант 3» строка сбрасывается в ноль, где она должна быть на самом деле 2. Я добавила метку для визуального доказательства - она ​​мигает «2», затем сбрасывает себя в ноль при обходе UIPickerView, как описано. Очевидно, что неспособность зависеть от отношения между элементом отображения и фактической точностью строки разрушает вещи. Не знаю, почему это не работает ...

class ViewController3: UIViewController, UITextFieldDelegate, UIPickerViewDelegate, UIPickerViewDataSource {

   @IBOutlet weak var picker: UIPickerView!
    @IBOutlet weak var textLabel: UILabel!


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

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



 func pickerView(_ pickerView: UIPickerView,titleForRow row: Int,forComponent component: Int) -> String?  {
          textLabel.text = String(row)
       return pickerValues[row]   
    }


    let pickerValues = ["Choice 1", "Choice 2", "Choice 3","Choice 4"]

1 Ответ

0 голосов
/ 29 апреля 2018

Если цель состоит в том, чтобы менять метку каждый раз, когда пользователь поворачивает «колесо» в окне выбора, реализуйте метод делегата pickerView(_:didSelectRow:inComponent:).

...