Ios 如何自动调用@iAction函数
您好,我不知道如何在Swift中为@iAction自动调用单击功能 比如说,我有一个计时器函数,当倒计时结束时,我需要以编程方式调用下面的Click函数@IBAction,而不是要求用户单击按钮 用swift怎么做 @IBAction func DoSomeTask(sender: UIButton) { - code-- } @iAction func DoSomeTask(发送方:UIButton){ -代码-- }Ios 如何自动调用@iAction函数,ios,swift,Ios,Swift,您好,我不知道如何在Swift中为@iAction自动调用单击功能 比如说,我有一个计时器函数,当倒计时结束时,我需要以编程方式调用下面的Click函数@IBAction,而不是要求用户单击按钮 用swift怎么做 @IBAction func DoSomeTask(sender: UIButton) { - code-- } @iAction func DoSomeTask(发送方:UIButton){ -代码-- } 您可以更改iAction的签名,方法是将其参数设置为可选参数,如下所示
您可以更改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
可能是更好的选择,这样可以避免创建一个按钮来满足功能的参数。是的,你是对的,但不要依赖可选功能,这两个是不同的解决方案