Изображение UIButton не изменится, когда я нажму на него - PullRequest
1 голос
/ 14 июня 2019

У меня button в моем классе TableViewCell с изображением коробки по умолчанию.Я хочу, чтобы изображение button сменилось на другое, когда оно выбрано, однако это не работает для меня.

Это класс TableViewCell:

class NameHeaderTableViewCell: UITableViewCell {

    @IBOutlet weak var nameLabel: UILabel!
    @IBOutlet weak var checkMarkButton: UIButton!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    func setup(model: UserModel) {
        nameLabel.text = model.name
    }
}

В моем ViewController я добавил цель, чтобы изменить состояние button при нажатии:

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let userModel = Data.userModels[section]
    let cell = tableView.dequeueReusableCell(withIdentifier: "nameCell") as! NameHeaderTableViewCell

    cell.setup(model: userModel)
    cell.checkMarkButton.addTarget(self, action: #selector(handleTap), for: .touchUpInside)



    cell.enable(on: false)
    if isUserEditing == true {
        cell.enable(on: true)
    }
    return cell.contentView
}
@objc func handleTap(sender: UIButton) {

    if sender.isSelected {
        sender.isSelected = false
    } else {
        sender.isSelected = true
    }

    tableView.reloadData()
}

//This just enables and disables the table headers depending on if there is text in a UITextField
extension UITableViewCell {
    func enable(on: Bool) {
        for view in contentView.subviews {
            view.isUserInteractionEnabled = on
            view.alpha = on ? 1 : 0.5
        }
    }
}

Я также устанавливаю изображения для определенных состояний в storyboard:

For the default state, I set the image to an unchecked box For the selected state, I set the image to a checked box

Опять же, когда в textfield есть текст, ячейки становятся активными, однако, когда я пытаюсь нажать на button, изображение не меняется.Я дважды проверил и даже убедился, что целевое членство было правильным, но не повезло.Спасибо за любую помощь, спасибо!

1 Ответ

1 голос
/ 14 июня 2019

Попробуйте использовать этот метод для программной установки изображения кнопки.Установите два разных изображения для состояний normal и selected.

checkMarkButton.setImage(UIImage(named: "selected_image"), for: .selected)
checkMarkButton.setImage(UIImage(named: "normal_image"), for: .normal)

Затем в вашем selector:

@objc func handleTap(sender: UIButton) {
    sender.isSelected = !sender.isSelected
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...