未按下按钮时如何调用按钮功能
Posted
技术标签:
【中文标题】未按下按钮时如何调用按钮功能【英文标题】:How do I call a button function when the button is not being pressed 【发布时间】:2015-05-01 12:19:33 【问题描述】:我有一个连接到按钮的 IBAction,我想知道即使没有按下按钮,是否有任何方法可以运行该功能。这是我尝试过的......
注意:我在这个项目中使用 swift。
//I get an error when I type this code?
self.buttonPressed()
@IBAction func buttonPressed(sender: AnyObject)
print("Called Action")
【问题讨论】:
什么错误?在运行时或构建错误? 您需要传递一个“发件人”参数。惯例是方法以小写字母开头,类以大写字母开头。 我传递了什么发件人参数? 如果sender
没有在你可以传递任何对象的动作中使用,self
是常见的。如果使用了sender
,则必须传递一个动作可接受的对象。
【参考方案1】:
将您的 sender 参数设为可选并将 nil 传递给 ButtonPressed。
self.ButtonPressed( nil )
@IBAction func ButtonPressed( sender: AnyObject? )
println("Called Action")
【讨论】:
【参考方案2】:一种方法是将您的按钮链接到其各自的界面构建器按钮,并在您调用它时将其传递给您的函数。
@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)
【讨论】:
@satachito 是的,我真的很喜欢 swift 中的可选参数!漂亮干净的代码:) '= nil' 对我不起作用。顺便说一句,这到底是做什么的? @NYCTechEngineer '= nil' 仅在类型被定义为可选(AnyObject 末尾的 ?)时才有效。这基本上意味着如果在没有任何参数的情况下调用该方法,它将默认将sender
设置为 nil。这有意义吗?
@Chackle 这实际上更有意义。我试图将 nil 传递给调用,也许这就是它不起作用的原因。我所要做的就是调用函数而不传递任何参数,它会自动发送nil,对吧?
@NYCTechEngineer 完全正确! :) 又好又干净,不是吗?【参考方案3】:
您的ButtonPressed
函数需要一个参数sender
,但您在调用它时并没有传递任何参数。但是,如果您以编程方式执行此操作,那么您显然没有sender
。
解决此问题的两种方法:
将 sender 参数设为可选参数(AnyObject?
而不是 AnyObject
)并调用 self.ButtonPress(nil)
。我刚试了一下,效果很好。
将所有按钮按下函数放在一个单独的函数中,例如performButtonPress()
。从 IBAction 插座内部调用它,如果你想以编程方式按下按钮,直接调用performButtonPress()
。
【讨论】:
【参考方案4】:使用以下格式调用按钮操作:Swift 3
@IBAction func buttonSelected(_ sender: UIButton)
print("Butten clicked")
调用按钮动作:
let button = UIButton()
self.buttonSelected(button)
【讨论】:
【参考方案5】:你需要使用“self”作为“sender”,例如:
self.buttonPressed (sender: self)
或更简单的版本
buttonPressed (sender: self)
都在 Swift 3 中测试
【讨论】:
【参考方案6】: 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
【讨论】:
以上是关于未按下按钮时如何调用按钮功能的主要内容,如果未能解决你的问题,请参考以下文章
按下回车按钮时如何使用 C++ Win32 API 调用按钮?