Как установить цвет фона определенного UITabelViewCell - PullRequest
0 голосов
/ 30 марта 2019

У меня динамическое представление таблицы.Здесь представлена ​​конкретная информация за целый месяц.У каждого дня своя клетка.И целью является установка цвета фона ячейки, дата которой совпадает с сегодняшней.

Первый.Я устанавливаю тег каждой ячейки внутри cellForRow indexPath:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "MonthlyCell", for: indexPath)

        guard let monthlyCell = cell as? MonthlyTableViewCell else {
            fatalError("Designated cell couldn't found")
        }

        monthlyCell.tag = indexPath.row
        return monthlyCell
    }

У меня также есть расширение.Что дает мне сегодняшний день как Int:

extension Date {
    static var nowDayAsInt: Int {
        let calendar = Calendar.current
        let component = calendar.dateComponents([.day], from: Date())
        return component.day!
    }
}

И, наконец, я обновляю фон пользовательской ячейки в своем собственном классе:

class MonthlyTableViewCell: UITableViewCell {
    if Date.nowDayAsInt == (self.tag + 1) {
            self.setDiagonalGradientBackground()
            self.makeRoundedCorners()
        }
}

self.setDiagonalGradientBackground() & self.makeRoundedCorners()также из UIView расширения, которое, как мне кажется, самоочевидно.

Результат: Всегда задает цвет фона для двух или более ячеек:

Снимок экрана: https://imgur.com/a/FfzUgZO

Как я могу решить эту проблему?Заранее спасибо

1 Ответ

1 голос
/ 30 марта 2019

Ячейки используются повторно, если вы изменяете пользовательский интерфейс при определенных условиях, вам необходимо добавить предложение else, чтобы установить значение по умолчанию

class MonthlyTableViewCell: UITableViewCell {
    if Date.nowDayAsInt == self.tag {
        self.setDiagonalGradientBackground()
        self.makeRoundedCorners()
    } else {
        // set default appearance
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...