首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >IBOutlet和IBAction

IBOutlet和IBAction
EN

Stack Overflow用户
提问于 2009-10-29 19:15:54
回答 9查看 173.4K关注 0票数 165

在Xcode和Interface Builder中使用IBOutlets和IBActions的目的是什么?

如果我不使用IBOutlets和IBActions会有什么不同吗?

Swift:

代码语言:javascript
复制
@IBOutlet weak var textField: UITextField!

@IBAction func buttonPressed(_ sender: Any) { /* ... */ }

Objective-C:

代码语言:javascript
复制
@property (nonatomic, weak) IBOutlet UITextField *textField;

- (IBAction)buttonPressed:(id)sender { /* ... */ }
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-10-29 19:22:03

IBActionIBOutlet是定义为表示可在接口生成器中引用的变量和方法的宏。

IBAction解析为voidIBOutlet解析为nothing,但它们对Xcode和接口构建器意味着可以在接口构建器中使用这些变量和方法来将UI元素链接到您的代码。

如果您根本不打算使用接口生成器,那么您的代码中就不需要它们,但是如果您要使用它,那么您需要为将在IB中使用的方法指定IBAction,为将在IB中使用的对象指定IBOutlet

票数 214
EN

Stack Overflow用户

发布于 2010-12-13 01:06:58

标记一个方法以便它出现在接口生成器中,并且您可以拖动一个连接到它的传统方法是使方法返回类型IBAction。然而,如果你把你的方法设为空的(IBAction是#define'd to be void),并提供一个(id)参数,那么这个方法仍然是可见的。这提供了额外的灵活性,

从Interface Builder中可以看到这3个选项:

代码语言:javascript
复制
-(void) someMethod1:(id) sender; 
-(IBAction) someMethod2; 
-(IBAction) someMethod3:(id) sender;

有关详细信息,请参阅Apple的Interface Builder用户指南,特别是标题为Xcode集成的部分。

票数 38
EN

Stack Overflow用户

发布于 2009-10-29 19:19:33

如果您正在为您的图形用户界面组件使用接口构建器(因此使用IB前缀),则需要使用IBOutlet和IBAction。IBOutlet用于将应用程序中的属性与IB中的组件相关联,而IBAction用于允许您的方法与IB中的操作相关联。

例如,假设您在IB中定义了一个按钮和标签。要通过按下按钮来动态更改标签的值,您将在应用程序中定义一个操作和属性,如下所示:

代码语言:javascript
复制
UILabel IBOutlet *myLabel;
- (IBAction)pushme:(id)sender;

然后在IB中,将myLabel与label连接,并将pushme方法与按钮连接。要使这些连接存在于IB中,您需要IBAction和IBOutlet。

票数 32
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1643007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档