无法更改 swift 3 中按钮的图像?

Unable to change image for the button in swift 3?

在我的复选标记代码中,我使用按钮更改选中和未选中的图像,但如果我单击它更改为未选中但再次选择按钮,它无法更改为选中图像,谁能帮我解决如何解决这个?

var checkedImage = UIImage(named: "check")! as UIImage
var uncheckedImage = UIImage(named: "uncheck")! as UIImage
var isChecked: Bool = true
var checkMarkSelected = 0

checkMarkButton.addTarget(self, action: #selector(checkMarkAction(button:)), for: .touchUpInside)

func checkMarkAction(button : UIButton) {
        if isChecked == true {
            checkMarkButton.setImage(checkedImage, for: .selected)
            isChecked = false
            checkMarkSelected = 1
        }
        else {
            checkMarkButton.setImage(uncheckedImage, for: .normal)
            isChecked = true
            checkMarkSelected = 0
        }
    }

我认为您应该在视图控制器的 viewDidLoad() 函数中为该按钮添加操作,或者,如果您在独立的 UIButton 继承了 class 为了将来在许多视图控制器中重用它,您应该 在 UIButton 的初始化程序中添加目标。

如果代码是这样写的,那就更奇怪了 Xcode 没有给你警告...

编辑:这是我将如何做的代码片段

//Comments

import UIKit

class ViewController: UIViewController {

  //link this to the checkmark buttons
  //subclass UIButton making a button with the property isChecked: Bool
  @IBOutlet weak var checkmarkButton: UICheckButton!

  var checkMarkSelected = 0

  override function viewDidLoad() {
    //do stuff with your viewdidload
  }

  //link this to the checkmark buttons
  @IBAction func checkMarkAction(sender: UICheckButton) {
        if sender.isChecked == false {
            let checkedImage = UIImage(named: "check")
            checkMarkButton.setImage(checkedImage, for: .normal)
            sender.isChecked = true
            checkMarkSelected += checkMarkSelected
        } else {
            let uncheckedImage = UIImage(named: "uncheck")
            checkMarkButton.setImage(uncheckedImage, for: .normal)
            sender.isChecked = false
            checkMarkSelected -= checkMarkSelected
        }
  }
Step 1: Select your CheckUIButton and set Image “Uncheck” (state config must be Default in attribute inspector)
Step 2: In attribute inspector change state config to Selected and set image “Check”
Step 3: Put following code in your UIButton action.

@IBAction func checkclick(_ sender: UIButton) {

        sender.isSelected = !sender.isSelected

    }

在Swift3

  @IBAction func btntouchupInsideevent(_ sender: UIButton)
        {
            if yourbtnOutletName.currentImage == "YourCheckImageName"
            {
                yourbtnOutletName.setImage(YourUncheckImage.imagetype, for: .normal)

            }
            else
            {
                btnIsEventRecouring.setImage(YourcheckImage.imagetype, for: .normal)

            }
        }

在Swift4:

@IBOutlet weak var termsAndConditionsButton: UIButton!

    if termsAndConditionsButton.isSelected == true {
        termsAndConditionsButton.setImage(UIImage(named: "checkboxOff"), for: .normal)
        termsAndConditionsButton.isSelected=false

    }
    else{
        termsAndConditionsButton.setImage(UIImage(named: "checkboxOn"), for: .normal)
        termsAndConditionsButton.isSelected=true
    }

在 IBAction 函数上试试这个

    sender.isSelected = !sender.isSelected

    
    if sender.isSelected == true {
      sender.isSelected = true
      sender.setImage(UIImage(named: "img_on"), for: UIControl.State.selected)
    }else{
      sender.isSelected = false
      sender.setImage(UIImage(named: "img_off"), for: UIControl.State.normal)
    }