UIPickerView выбирает строку в неправильном компоненте (требуется экзорцизм?) - PullRequest
0 голосов
/ 26 августа 2018

Я не знаю, что я сделал, чтобы разозлить богов, но мой UIPickerView работает ненормально.Он имеет 2 компонента для значений месяца и года, и выбор значения в правом компоненте (year) также приводит к изменению значения в левом компоненте (month).

Сначала я создаю UIPickerView, используя следующий код:

pickerView = UIPickerView(frame: ...)
pickerView.delegate = self
pickerView.dataSource = self

Затем я реализую несколько простых методов делегирования / источника данных для обработки представления выбора, как показано ниже:

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    if component == 0 {
        expirationMonth = months[row]
    } else {
        expirationYear = years[row]
    }
    expirationTextField?.text = "\(expirationMonth ?? "")/\(expirationYear?.substring(from: 2) ?? "")"
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    if component == 0 {
        return months[row]
    } else {
        return years[row]
    }
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    if component == 0 {
        return months.count
    } else {
        return years.count
    }
}

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

Кроме того, метод источника данных UIPickerView numberOfComponents вызывается, даже если я не установил источник данных представления средства выбора.

Понятия не имею, что вызывает такое поведение.Я попробовал почти все, и ничто не мешает изменить значения обоих столбцов.У кого-нибудь есть идеи, чтобы это исправить?

1 Ответ

0 голосов
/ 27 августа 2018

Оказывается, это ошибка в симуляторе iOS, потому что при запуске его на моем iPhone это работало как шарм.Я думал, что схожу с ума там на секунду!

Я собираюсь подать жалобу на ошибку утром ... Удачи всем с этой проблемой.

...