13
votes

Hi I am not sure how to do auto call a click-function for an @IBAction in Swift.

Say, I have a timer function, when countdown is finished, I need to call the Click-function @IBAction as below programmatically instead of asking user to click the button

How to do it in swift?


@IBAction func DoSomeTask(sender: UIButton) {

- code--

}
3
Change sender: UIButton to sender: UIButton! and call DoSomeTask(nil) from where ever you want.sbarow
It's a function. Just call it like any other function. You will need to make the parameter UIButton! or UIButton? (optional) to be able to pass in nil as the sender if you don't want to pass in the button.Jesper
What is your concrete problem? It can't be calling a simple function?Eiko

3 Answers

40
votes

You can either change the signature of the IBAction by making its parameter an Optional like this:

@IBAction func doSomeTask(sender: UIButton?) {
    // code
}

and then call it with nil as an argument:

doSomeTask(nil)

Or you can use the IBAction as a wrapper for the real function:

func doSomeTaskForButton() {
    // ...
}

@IBAction func doSomeTask(sender: UIButton) {
    doSomeTaskForButton()
}

meaning you can then call doSomeTaskForButton() from wherever you want.

4
votes

doSomeTask(UIButton()) in swift 5.0 and onward

0
votes

Do the same thing as @Moritz said but instead

@IBAction func doSomeTask(sender: UIButton? = nil) {
    // code
}

so that way, you do something like:

 `doSomeTask()`

which is saying the same thing as saying

 `doSomeTask(sender:nil)

or pass an UIButton object if you so wish so.

 doSomeTask(sender:SomeUIButton)