我将一个IBOutlet和IBAction我的按钮变量从Interface Builder连接到我的View Controller.如何在Swift中为按钮添加动作方法?这段代码似乎不起作用.
@IBOutlet var OK: UIButton!
@IBAction func OK(sender: UIButton){}
Run Code Online (Sandbox Code Playgroud)
我找到的Objective-C等价物是:
@interface Controller
{
IBOutlet id textField; // links to TextField UI object
}
- (IBAction)doAction:(id)sender; // e.g. called when button pushed
Run Code Online (Sandbox Code Playgroud)
Cal*_*ter 11
当您将按钮附加到viewController,并创建一个动作(IBAction使用ctrl-drag)时,你创建一个方法(也称为函数),在Swift中看起来像这样(如果它没有参数):
@IBAction func buttonAction() {}
Run Code Online (Sandbox Code Playgroud)
在Objective-C中,同样的事情看起来像这样:
- (IBAction)buttonAction {}
Run Code Online (Sandbox Code Playgroud)
这意味着这@IBAction func OK(sender: UIButton){}是一种行动方法.
如果你想知道发件人的论点,我会推荐这篇 SO帖子.
对于你想要做的事情,我创建一个IBOutlet和一个IBAction,这样我可以用outlet变量改变它的属性,并且具有动作方面的东西IBAction,就像你在上面显示的那样:
@IBOutlet var OK: UIButton!
@IBAction func OK(sender: UIButton){}
Run Code Online (Sandbox Code Playgroud)
例如,如果我想隐藏按钮,我会将此代码放入 viewDidLoad
OK.hidden = true
Run Code Online (Sandbox Code Playgroud)
该代码中的OK是针对outlet变量的,如果我想在按下按钮时将"You pressed me"打印到控制台,我会使用以下代码:
@IBAction func OK(sender: UIButton){
println("You pressed me")
}
Run Code Online (Sandbox Code Playgroud)
上面我正在使用动作将"你逼我"打印到控制台.
当Swift 2.0发布时,println将被更改为print.还有你的行动和出口,我建议给他们不同的名字,以便更容易区分这两者,如下所示:
@IBOutlet var okOutlet: UIButton!
@IBAction func okAction(sender: UIButton){}
Run Code Online (Sandbox Code Playgroud)
除此之外,在命名变量,常量,函数等时应该使用驼峰大小写.
您可以遵循以下步骤 -
为了@IBOutlet
1.在类名之后声明您的界面构建器元素属性
class SomeViewController: UIViewController{
@IBOutlet weak var aTextField : UITextField! ////Your Interface builder Element
Run Code Online (Sandbox Code Playgroud)
2.从情节提要中挂钩 IB 元素。
为了@IBAction
1.在你的类中编写一个方法(比如SomeViewController)
@IBAction func anAction(_sender : AnyObject){
}
Run Code Online (Sandbox Code Playgroud)
2.Hook来自Storyboard的方法。
希望它可能有所帮助。
| 归档时间: |
|
| 查看次数: |
28667 次 |
| 最近记录: |