UITableViewCell выбор backgroundColor изменение не работает - PullRequest
0 голосов
/ 05 апреля 2019

У меня есть пользовательский класс UITableViewCell, который выглядит следующим образом:

class CustomTableViewCell: UITableViewCell {

    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)

        self.selectionStyle = .none
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        print("Selected: ", selected)

        if selected {
            self.backgroundColor = .red
        } else {
            self.backgroundColor = .white
        }
    }

    override func setHighlighted(_ highlighted: Bool, animated: Bool) {
        super.setHighlighted(highlighted, animated: animated)

        print("Highlighted: ", highlighted)

        if highlighted {
            self.backgroundColor = .red
        } else {
            self.backgroundColor = .white
    }
}

А потом в мой UITableViewDelegate я добавил этот код:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableView.deselectRow(at: indexPath, animated: true)

    // Navigate to the next screen
}

Однако оба print() утверждения всегда ложны. И backgroundColor никогда не меняется. Что-то я здесь не так делаю?

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Я выяснил две проблемы в вашем коде. Пожалуйста, обратитесь к вопросу ниже вместе с решением.

Пожалуйста, используйте код ниже, чтобы установить цвет фона UITableViewCell

    self.contentView.backgroundColor = .red

Вместо

    self.backgroundColor = .red

Просто замените метод didSelectRowAt, если хотите навсегда изменить цвет, в противном случае сохраните его как есть.

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

}

См. Ниже прилагаемый исходный код демонстрационного приложения. Если потребуется дополнительная помощь.

Исходный код

0 голосов
/ 05 апреля 2019

Удалите весь другой код, просто замените ваш UITableViewCell класс этим

class CustomTableViewCell: UITableViewCell {
    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        self.backgroundColor = selected ? .red : .white
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...