UIPickerView Выбранный дизайн заголовка строки не изменяется, в то время как значение строки равно 1 - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть 2 uipickerview для выбора значений часов и минут. Когда я хотел выбрать значения по умолчанию для них обоих, если selectedRow = 1, цвет заголовка становится серым (это означает, что строка не выделена) и эта проблема возникает только при первой загрузке (когда срабатывает viewDidLoad). Цвета меняются, как и ожидалось, за исключением этих проблем.

Это мой метод делегата сборщика для изменения ярлыка сборщика и его спецификаций. Эта функция прекрасно работает, когда я изменяю значение выбора.

func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {

    var label = UILabel()
    if let v = view as? UILabel { label = v }
    label.font = UIFont (name: "Muli-Bold", size: 22)

    if pickerView.selectedRow(inComponent: component) == row {
        label.textColor = StyleManager.colors.deviceModeActiveBlue
    } else {
        label.textColor = StyleManager.colors.pickerLightGray
    }

    if (pickerView.tag == 1){
        label.text =   "\(hours[row])"
    }else{
        label.text =  "\(minutes[row])"
    }

    label.textAlignment = .center
    return label
}

InDidLoad

pickerHour.selectRow(Int(calculateDelayTime(delayTime: currentDevice.dwProgramDelayDuration!)[0])!, inComponent: 0, animated: true)
pickerHour.reloadAllComponents()
pickerMinute.selectRow(Int(calculateDelayTime(delayTime: currentDevice.dwProgramDelayDuration!)[1])!, inComponent: 0, animated: true)
pickerMinute.reloadAllComponents()

Когда значение selectRow равно 1, заголовок строки имеет серый цвет (это означает, что эта строка не выделена), но выбирается первая строка. Если он отличается от 1, его цвет заголовка будет синим (как и должно быть), а также будет выделен выбранный ряд.

В другом изречении эти два примера работают как положено.

pickerHour.selectRow(2, inComponent: 0, animated: true)
pickerHour.reloadAllComponents()
pickerMinute.selectRow(2, inComponent: 0, animated: true)
pickerMinute.reloadAllComponents()

pickerHour.selectRow(0, inComponent: 0, animated: true)
pickerHour.reloadAllComponents()
pickerMinute.selectRow(0, inComponent: 0, animated: true)
pickerMinute.reloadAllComponents()

А это не так.

pickerHour.selectRow(1, inComponent: 0, animated: true)
pickerHour.reloadAllComponents()
pickerMinute.selectRow(1, inComponent: 0, animated: true)
pickerMinute.reloadAllComponents()

Спасибо за вашу помощь. Хорошего дня.

...