繁体   English   中英

Swift 中的 IBOutlet 和 IBAction

[英]IBOutlet and IBAction in Swift

我将IBOutletIBAction连接到我的按钮变量,从 Interface Builder 到我的视图控制器。 如何在 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

当您将按钮附加到viewController并使用 ctrl-drag 创建一个操作 ( IBAction ) 时,您将创建一个在 Swift 中看起来像这样的方法(如果它没有参数):

@IBAction func buttonAction() {}

在 Objective-C 中,同样的事情看起来像这样:

- (IBAction)buttonAction {}

所以这意味着@IBAction func OK(sender: UIButton){}是一个动作方法。

如果您想了解发件人参数,我会推荐这篇SO 帖子。

编辑:

对于您想要做的事情,我创建了一个IBOutlet和一个IBAction ,这样我就可以使用 outlet 变量更改其属性,并使用IBAction ,就像上面显示的那样:

@IBOutlet var OK: UIButton!
@IBAction func OK(sender: UIButton){} 

例如,如果我想隐藏按钮,我会将这段代码放在viewDidLoad

OK.hidden = true

该代码中的 OK 用于 outlet 变量,如果我想在按下按钮时将“You press me”打印到控制台,我将使用以下代码:

@IBAction func OK(sender: UIButton){
  println("You pressed me")
}

上面我正在使用操作将“你按下了我”打印到控制台。

需要注意的几点:

当 Swift 2.0 发布时, println将更改为print 还有你的行动和出口,我建议给他们不同的名字,以便更容易区分两者,像这样:

@IBOutlet var okOutlet: UIButton!
@IBAction func okAction(sender: UIButton){} 

除此之外,在命名变量、常量、函数等时应该使用驼峰式大小写。

一种方法是从您的按钮控制拖动到您的视图控制器并选择操作: 在此处输入图片说明

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

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

对于@IBOutlet

1.在类名之后声明你的接口构建器元素属性

class SomeViewController: UIViewController{

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

2.Hook IB 元素从 Storyboard。

在此处输入图片说明

对于@IBAction

1.在你的类中写一个方法(比如SomeViewController

@IBAction func anAction(_sender : AnyObject){


}

2.Hook Storyboard 中的方法。

在此处输入图片说明

希望它可能会有所帮助。

您可以简单地从故事板添加动作。 请参阅图像。 图片

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM