Swift中的IBOutlet和IBAction

时间:2015-09-14 19:19:46

标签: swift iboutlet

我将IBOutletIBAction连接到我从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

4 个答案:

答案 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)

执行此操作的一种方法是从按钮控制拖动到viewcontroller并选择操作: enter image description here

如果您已连接按钮的操作,则代码应该可以正常工作。

答案 2 :(得分:3)

以下是您可以遵循的步骤 -

@IBOutlet

1.在类名

之后立即声明您的界面构建器元素属性
class SomeViewController: UIViewController{

    @IBOutlet weak var aTextField : UITextField! ////Your Interface builder Element

2.从故事板中取出IB元素。

enter image description here

@IBAction

1.在课堂内写一个方法(比如SomeViewController

@IBAction func anAction(_sender : AnyObject){


}

2.从故事板中隐藏方法。

enter image description here

希望它可能有所帮助。

答案 3 :(得分:2)

您只需添加故事板中的操作即可。查看图片。Image