在不按下按钮的情况下调用@IBAction 函数

Call @IBAction function without pressing the button

如何使用原始 sendercalc() 调用 button1() func(就像我点击此按钮一样)?使用 nil 调用 func 是不好的解决方案,因为原始发件人丢失了,我无法通过 sender?.image = UIImage(named: "").

更改按钮图像

其他主题中的所有答案都提供使用button.sendActions(for: .touchUpInside)。但是这个解决方案不起作用。

var var1 = true
var var2 = 1

@IBAction func button1(_ sender: UIBarButtonItem?) {

    if var2 == 1 {

        sender?.image = UIImage(named: "1")

    } else {
        sender?.image = UIImage(named: "2")
    }

}


func calc() {

    if var1 {
        button1(nil)
    }

}

可以打电话self.perform(Selector, with: self)

制作按钮的出口并将参考作为发件人传递

@IBOutlet var outletButton: UIButton!

func calc() {

    if var1 {
        button1(outletButton)
    }

}
var var1 = true
var var2 = 1


@IBAction func button1(_ sender: UIBarButtonItem?) {
    button1Action()
}

func button1Action() {
    if var2 == 1 {
        sender?.image = UIImage(named: "1")

    } else {
        sender?.image = UIImage(named: "2")
    }
}


func calc() {
    if var1 {
        button1Action()
    }
}