Search code examples
swiftfunctionbuttonibaction

Call @IBAction function without pressing the button


How i can call button1() func from calc() with original sender(like if i tap this button)? Call func with nil is bad soulution, because original sender is lost and i cant change button image through sender?.image = UIImage(named: "").

All answers in others topics offer use button.sendActions(for: .touchUpInside). But this solution isn't working.

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)
    }

}

Solution

  • Make outlet of button and pass the reference as sender

    @IBOutlet var outletButton: UIButton!
    
    func calc() {
    
        if var1 {
            button1(outletButton)
        }
    
    }