ios 未按下按钮时如何调用按钮功能
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/29986738/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How do I call a button function when the button is not being pressed
提问by nachshon fertel
I have an IBAction connected to a button, and I wanted to know if there is any way to run that function even if the button is not being pressed. This is what I tried...
我有一个连接到按钮的 IBAction,我想知道即使没有按下按钮,是否有任何方法可以运行该功能。这是我试过的...
Note: I am using swift for this project.
注意:我在这个项目中使用 swift。
//I get an error when I type this code?
self.buttonPressed()
@IBAction func buttonPressed(sender: AnyObject) {
print("Called Action")
}
回答by Satachito
Make your sender argument optional and pass nil to ButtonPressed.
使您的发件人参数可选并将 nil 传递给 ButtonPressed。
self.ButtonPressed( nil )
@IBAction func ButtonPressed( sender: AnyObject? ) {
println("Called Action")
}
回答by Chackle
One way would be to link your button up to its respective interface builder button and pass it into your function when you call it.
一种方法是将您的按钮链接到其各自的界面构建器按钮,并在您调用它时将其传递到您的函数中。
@IBOutlet weak var yourButton: UIButton!
self.buttonPressed(yourButton)
@IBAction func buttonPressed(sender: AnyObject) {
print("Called Action")
}
Alternatively, define your function like so, then you'll be able to call your method the same way as you did before:
或者,像这样定义你的函数,然后你就可以像以前一样调用你的方法:
@IBAction func buttonPressed(sender: AnyObject? = nil) {
print("Called Action")
}
// Call your method like this
self.buttonPressed()
// or this
self.buttonPressed(sender: nil)
回答by Matthew Quiros
Your ButtonPressed
function needs an argument sender
and yet you're not passing any when you call it. However, if you're doing this programatically, then you obviously don't have a sender
.
您的ButtonPressed
函数需要一个参数sender
,但您在调用它时没有传递任何参数。但是,如果您以编程方式执行此操作,那么您显然没有sender
.
Two ways to get around this:
解决这个问题的两种方法:
- Make the sender parameter an optional (
AnyObject?
instead ofAnyObject
) and invokeself.ButtonPress(nil)
. I just tried this and it works. - Put all the button press function in a separate function, e.g.,
performButtonPress()
. Call it from inside the IBAction outlet, and if you want to press the button programatically, directly callperformButtonPress()
.
- 将 sender 参数设为可选(
AnyObject?
而不是AnyObject
)并调用self.ButtonPress(nil)
. 我刚试过这个,它的工作原理。 - 将所有按钮按下功能放在一个单独的功能中,例如,
performButtonPress()
。从 IBAction outlet 内部调用它,如果你想以编程方式按下按钮,直接调用performButtonPress()
.
回答by Ram Madhavan
Call a button action using the following format: Swift 3
使用以下格式调用按钮操作:Swift 3
@IBAction func buttonSelected(_ sender: UIButton) {
print("Butten clicked")
}
To call the button action:
调用按钮动作:
let button = UIButton()
self.buttonSelected(button)
回答by Urvish Modi
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
回答by ooenomel2003
You need to use "self" as "sender", example:
您需要使用“self”作为“sender”,例如:
self.buttonPressed (sender: self)
or a simpler version
或者更简单的版本
buttonPressed (sender: self)
Both tested in Swift 3
两者都在 Swift 3 中测试过