Как я могу изменять индивидуально с несколькими UIPickerViews? - PullRequest
1 голос
/ 08 мая 2020

У меня есть 4 UIPickerViews, которые я действую на изменения в каждом отдельном представлении средства выбора, используя операторы if для каждого имени представления средства выбора. Для одного из сборщиков, таймера с h: m: s, я пытаюсь добавить метки для единиц времени, используя этот ответ .

Он отлично работает с одним средством выбора, но когда я добавляю в свой основной код с другими 3 средствами выбора, я хочу вернуть только значение для alarmPicker. Мне нужен возврат типа UIView вне оператора if, но я не могу понять, что было бы, если бы я создавал UILabels только для alarmPicker. Если я возвращаю UIView (), другие сборщики не заполняют свои строки titleForRow.

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        if pickerView == picker1 {                                          
            // code
        }
        if pickerView == picker2 {                                         
            // code
        }
        if pickerView == picker3 {                                           
            // code
        }
        if pickerView == alarmPicker {
            if let label = pickerView.view(forRow: row, forComponent: component) as? UILabel {
                if component == 0, row > 1 {
                    label.text = String(row) + " hours"
                }
                else if component == 0 {
                    label.text = String(row) + " hour"
                }
                else if component == 1 {
                    label.text = String(row) + " min"
                }
                else if component == 2 {
                    label.text = String(row) + " sec"
                }
            }

        }
    }

    func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
        if pickerView == alarmPicker {
            let label = UILabel()
            label.text = String(row)
            label.textAlignment = .center
            return label
        }
        return UIView()
    }

1 Ответ

0 голосов
/ 08 мая 2020

Я думаю, было бы лучше создать отдельного делегата для каждого средства выбора, по крайней мере, для средства выбора сигналов тревоги. Это улучшит ваш код, потому что вам не нужны все эти if pickerView == picker1 / picker2 / picker3 / picker4 каскады.

Вы также можете создать базовый класс для работы делегата общего средства выбора и получить делегат средства выбора с индивидуальным кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...