在Xcode和Interface Builder中使用IBOutlets和IBActions的目的是什么?
如果我不使用IBOutlets和IBActions会有什么不同吗?
Swift:
@IBOutlet weak var textField: UITextField!
@IBAction func buttonPressed(_ sender: Any) { /* ... */ }
Objective-C:
@property (nonatomic, weak) IBOutlet UITextField *textField;
- (IBAction)buttonPressed:(id)sender { /* ... */ }
发布于 2009-10-29 19:22:03
IBAction
和IBOutlet
是定义为表示可在接口生成器中引用的变量和方法的宏。
IBAction
解析为void
,IBOutlet
解析为nothing,但它们对Xcode和接口构建器意味着可以在接口构建器中使用这些变量和方法来将UI元素链接到您的代码。
如果您根本不打算使用接口生成器,那么您的代码中就不需要它们,但是如果您要使用它,那么您需要为将在IB中使用的方法指定IBAction
,为将在IB中使用的对象指定IBOutlet
。
发布于 2010-12-13 01:06:58
标记一个方法以便它出现在接口生成器中,并且您可以拖动一个连接到它的传统方法是使方法返回类型IBAction。然而,如果你把你的方法设为空的(IBAction是#define'd to be void),并提供一个(id)参数,那么这个方法仍然是可见的。这提供了额外的灵活性,
从Interface Builder中可以看到这3个选项:
-(void) someMethod1:(id) sender;
-(IBAction) someMethod2;
-(IBAction) someMethod3:(id) sender;
有关详细信息,请参阅Apple的Interface Builder用户指南,特别是标题为Xcode集成的部分。
发布于 2009-10-29 19:19:33
如果您正在为您的图形用户界面组件使用接口构建器(因此使用IB前缀),则需要使用IBOutlet和IBAction。IBOutlet用于将应用程序中的属性与IB中的组件相关联,而IBAction用于允许您的方法与IB中的操作相关联。
例如,假设您在IB中定义了一个按钮和标签。要通过按下按钮来动态更改标签的值,您将在应用程序中定义一个操作和属性,如下所示:
UILabel IBOutlet *myLabel;
- (IBAction)pushme:(id)sender;
然后在IB中,将myLabel与label连接,并将pushme方法与按钮连接。要使这些连接存在于IB中,您需要IBAction和IBOutlet。
https://stackoverflow.com/questions/1643007
复制相似问题