我将IBOutlet
和IBAction
连接到我从Interface Builder到我的View Controller的按钮变量。如何在Swift中为按钮添加动作方法?
这段代码似乎无法运作。
@IBOutlet var OK: UIButton!
@IBAction func OK(sender: UIButton){}
我发现的Objective-C等价物是:
@interface Controller
{
IBOutlet id textField; // links to TextField UI object
}
- (IBAction)doAction:(id)sender; // e.g. called when button pushed
答案 0 :(得分:11)
当你将一个按钮附加到viewController
,并使用ctrl-drag创建一个动作(IBAction
)时,你创建了一个在Swift中看起来像这样的方法(也称为函数)(如果它没有参数):
@IBAction func buttonAction() {}
在Objective-C中,同样的事情将如下所示:
- (IBAction)buttonAction {}
这意味着@IBAction func OK(sender: UIButton){}
是一种行动方法。
如果您想了解发件人参数,我建议this SO post。
对于你想要做的事情,我创建了一个IBOutlet
和一个IBAction
,这样我可以使用outlet变量更改它的属性,并使用{{1就像你上面显示的那样:
IBAction
例如,如果我想隐藏按钮,我会将此代码放在@IBOutlet var OK: UIButton!
@IBAction func OK(sender: UIButton){}
viewDidLoad
该代码中的OK是针对outlet变量的,如果我想在按下按钮时将“你按下我”打印到控制台,我会使用这段代码:
OK.hidden = true
上面我正在使用动作将“你逼我”打印到控制台。
当Swift 2.0发布时@IBAction func OK(sender: UIButton){
println("You pressed me")
}
将更改为println
。还有你的行动和出路,我建议给他们不同的名字,以便更容易区分这两者,如下:
print
除此之外,在命名变量,常量,函数等时应该使用驼峰案例。
答案 1 :(得分:7)
答案 2 :(得分:3)
以下是您可以遵循的步骤 -
@IBOutlet
1.在类名
之后立即声明您的界面构建器元素属性class SomeViewController: UIViewController{
@IBOutlet weak var aTextField : UITextField! ////Your Interface builder Element
2.从故事板中取出IB元素。
@IBAction
1.在课堂内写一个方法(比如SomeViewController
)
@IBAction func anAction(_sender : AnyObject){
}
2.从故事板中隐藏方法。
希望它可能有所帮助。
答案 3 :(得分:2)