Как выделить UIButton над UITableViewCell - PullRequest
0 голосов
/ 03 декабря 2018

Как установить UIButton выделение при нажатии, пожалуйста, помогите мне, потому что я полностью застрял в этом коде

func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) {
    let cell = self.leaveDetailTableView.cellForRow(at: indexPath) as? LeaveDetailCell
    cell!.cellCardView.backgroundColor = #colorLiteral(red: 0.9568627451, green: 0.8941176471, blue: 0.6549019608, alpha: 1)
}

func tableView(_ tableView: UITableView, didUnhighlightRowAt indexPath: IndexPath) {
    let cell = self.leaveDetailTableView.cellForRow(at: indexPath) as? LeaveDetailCell
    cell!.cellCardView.backgroundColor = UIColor.white
}

Когда я выбираю элемент представления таблицы, я должен выделить конкретную строку нужным цветомвыбрать свой цвет.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Ответ Роберта Дреслера будет работать для ячейки, которая выбрана, но не выделена.Я бы хотел создать подкласс UITableViewCell, таким образом вы абстрагируете этот код от остальной части вашей логики и создаете что-то, что можно использовать повторно.Я приведу быстрый пример;

class HighlightTableViewCell: UITableViewCell {

    var highlightColor: UIColor {
        didSet {
            highlightView.backgroundColor = highlightColor
        }
    }

    private var highlightView: UIView = UIView()

    override func awakeFromNib() {
        super.awakeFromNib()

        selectionStyle = .none

        addSubview(highlightView)
        highlightView.autoPinEdgesToSuperviewEdges()
    }

    override func layoutSubviews() {
        super.layoutSubviews()

        bringSubview(toFront: highlightView)
    }

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

        highlightView.isHidden = !highlighted
        highlightView.layoutIfNeeded()
    }
}
0 голосов
/ 03 декабря 2018

Вы можете сделать что-то вроде этого, если вы хотите изменить цвет при нажатии кнопки. Сначала вы должны добавить действие к вашей кнопке

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTapGesture(_:)))
cell.cellCardView.addGestureRecognizer(tapGesture)

После того, как вы это сделаете, внутри действия handleTapGesture(_:) Вы можете изменить цвет вашей кнопки следующим образом

func handleTapGesture(_ sender: UIButton) {
    UIView.animate(withDuration: 0.1, animations: {
        sender.backgroundColor = #colorLiteral(red: 0.9568627451, green: 0.8941176471, blue: 0.6549019608, alpha: 1)
    }) { (_) in
        sender.backgroundColor = .white
    }
}
...