我有一个与按钮连接的IBAction,并且想知道是否有任何方法可以在未按下按钮的情况下运行该函数。这是我尝试过的...
注意:我正在使用Swift进行此项目。
//I get an error when I type this code?
self.buttonPressed()
@IBAction func buttonPressed(sender: AnyObject) {
print("Called Action")
}
我有一个与按钮连接的IBAction,并且想知道是否有任何方法可以在未按下按钮的情况下运行该函数。这是我尝试过的...
注意:我正在使用Swift进行此项目。
//I get an error when I type this code?
self.buttonPressed()
@IBAction func buttonPressed(sender: AnyObject) {
print("Called Action")
}
使你的发送者参数变为可选,并将nil传递给ButtonPressed。
self.ButtonPressed( nil )
@IBAction func ButtonPressed( sender: AnyObject? ) {
println("Called Action")
}
一种方法是将您的按钮与其对应的界面生成器按钮链接起来,并在调用函数时将其传递到函数中。
@IBOutlet weak var yourButton: UIButton!
self.buttonPressed(yourButton)
@IBAction func buttonPressed(sender: AnyObject) {
print("Called Action")
}
或者,可以这样定义函数,然后你就能够像以前一样调用你的方法:
@IBAction func buttonPressed(sender: AnyObject? = nil) {
print("Called Action")
}
// Call your method like this
self.buttonPressed()
// or this
self.buttonPressed(sender: nil)
sender
设置为 nil。这有意义吗? - ChackleButtonPressed
函数需要一个参数sender
,但是在调用它时您没有传递任何参数。然而,如果您是以编程方式进行操作,则显然没有sender
。AnyObject?
而不是AnyObject
),并调用self.ButtonPress(nil)
。我刚刚尝试了一下,它可以工作。performButtonPress()
。从IBAction输出中调用它,如果您想以编程方式按下按钮,则直接调用performButtonPress()
。@IBAction func buttonSelected(_ sender: UIButton) {
print("Butten clicked")
}
let button = UIButton()
self.buttonSelected(button)
lazy var Button : UIBarButtonItem = {
let barButtonItem = UIBarButtonItem(title: "Button", style: .done, target: self, action: #selector(btnSelection))
return barButtonItem
}()
func btnSelection(){
// Code
}
// Now you can call self.btnSelection() whenever you want
self.buttonPressed (sender: self)
或者一个更简单的版本
buttonPressed (sender: self)
两者都在Swift 3中进行了测试。