У меня есть 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()
Спасибо за вашу помощь. Хорошего дня.