Ios 如何自动调用@iAction函数

Ios 如何自动调用@iAction函数,ios,swift,Ios,Swift,您好,我不知道如何在Swift中为@iAction自动调用单击功能 比如说,我有一个计时器函数,当倒计时结束时,我需要以编程方式调用下面的Click函数@IBAction,而不是要求用户单击按钮 用swift怎么做 @IBAction func DoSomeTask(sender: UIButton) { - code-- } @iAction func DoSomeTask(发送方:UIButton){ -代码-- } 您可以更改iAction的签名,方法是将其参数设置为可选参数,如下所示

您好,我不知道如何在Swift中为@iAction自动调用单击功能

比如说,我有一个计时器函数,当倒计时结束时,我需要以编程方式调用下面的Click函数@IBAction,而不是要求用户单击按钮

用swift怎么做

@IBAction func DoSomeTask(sender: UIButton) { - code-- } @iAction func DoSomeTask(发送方:UIButton){ -代码-- }
您可以更改iAction的签名,方法是将其参数设置为可选参数,如下所示:

@IBAction func doSomeTask(sender: UIButton?) {
    // code
}
然后用nil作为参数调用它:

doSomeTask(nil)
或者,您可以将iAction用作实际函数的包装器:

func doSomeTaskForButton() {
    // ...
}

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

这意味着你可以在任何你想要的地方调用doSomeTaskForButton()。

做与@Moritz所说的相同的事情,但是相反

@IBAction func doSomeTask(sender: UIButton? = nil) {
    // code
}
这样,您可以执行以下操作:

 `doSomeTask()`
这跟我说的是一样的

 `doSomeTask(sender:nil)
如果您愿意,也可以传递UIButton对象

 doSomeTask(sender:SomeUIButton)

doSomeTask(UIButton())
在swift 5.0及以后版本中

sender:UIButton
更改为
sender:UIButton
并在任何需要的地方调用
DoSomeTask(nil)
。这是一个函数。就像调用其他函数一样调用它。您需要设置参数
ui按钮
ui按钮?
(可选)如果您不想传递按钮,则可以作为发件人传递
nil
。您的具体问题是什么?它不能调用一个简单的函数?使用!或为了这些func?使用任何对象是否存在差异?:doSomeTask(发送方:UIButton!)或doSomeTask(发送方:AnyObject!)或doSomeTask(发送方:AnyObject?)或doSomeTask(发送方:UIButton?)。这两种情况似乎都有效。哪一个是最佳实践?即使用户在第一次自动调用后意外地再次按下该按钮,它仍然可以工作。
doSomeTask(发送方:UIButton!)
意味着您不能将nil作为参数传递(强制展开)
doSomeTask(发送方:AnyObject!)
是相同的,但是您必须将
发送者
转换为iAction中的UIButton才能使用它
doSomeTask(sender:UIButton?
很好,因为它将参数包装为可选参数,因此如果不直接从按钮调用iAction,您可以从按钮或
nil
发送实际消息。您从中获得的
UIButton()
上下文可能有助于提问者回答问题。我知道这只是UIKit的一部分,但我认为将动作功能设置为可选,然后发送
nil
可能是更好的选择,这样可以避免创建一个按钮来满足功能的参数。是的,你是对的,但不要依赖可选功能,这两个是不同的解决方案