我的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
中的某些状态设置了图像:
同样,当textfield
中有文本时,单元格将启用,但是当我尝试单击button
时,图像不会改变。我已经仔细检查过,甚至确定目标会员身份正确无误。非常感谢您的任何帮助,谢谢!
答案 0 :(得分:1)
尝试使用此方法以编程方式设置按钮的图像。为状态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
}