IBOutlet 和 IBAction
-
10-07-2019 - |
题
在 iPhone 的 Objective-C 编码中使用 IBAction 和 IBOutlet 的目的是什么?如果我不使用它们有什么区别吗?
解决方案
IBAction
和IBOutlet
是定义的宏,用于表示可在Interface Builder中引用的变量和方法。
void
解析为<=>且<=>解析为空,但它们向Xcode和Interface构建器表示可以在“接口”构建器中使用这些变量和方法将UI元素链接到您的代码。
如果您根本不打算使用Interface Builder,那么您的代码中不需要它们,但如果您打算使用它,那么您需要为将要指定的方法指定<=>在IB中使用,<=>用于将在IB中使用的对象。
其他提示
标记方法以使其出现在Interface Builder中的传统方法,并且您可以将连接拖到它,已经使方法返回类型IBAction。但是,如果您使方法为void(IBAction是#define'd为void),并提供(id)参数,则该方法仍然可见。这提供了额外的灵活性,al
所有这三个都可以从Interface Builder中看到:
-(void) someMethod1:(id) sender;
-(IBAction) someMethod2;
-(IBAction) someMethod3:(id) sender;
有关详细信息,请参阅Apple的Interface Builder用户指南,尤其是标题为Xcode Integration的部分。
如果要为GUI组件使用接口构建器(因此使用IB前缀),则需要使用IBOutlet和IBAction。需要IBOutlet将应用程序中的属性与IB中的组件相关联,IBAction用于允许您的方法与IB中的操作相关联。
例如,假设您在IB中定义了一个按钮和标签。要通过按下按钮动态更改标签的值,您将在应用中定义一个操作和属性,类似于:
UILabel IBOutlet *myLabel;
-(IBAction) pushme;
然后在IB中,您将myLabel与标签连接,并将pushme方法与按钮连接。您需要IBAction和IBOutlet才能在IB中存在这些连接。
Interface Builder使用它们来确定哪些成员和消息可以“连接”到您在窗口/视图中使用的界面控件。
IBOutlet和IBAction纯粹作为Interface Builder在设计时解析代码时所寻找的标记,它们对编译器生成的代码没有任何影响。
Outlet是从代码到UI的链接。如果要显示或隐藏UI元素,如果要获取文本字段的文本或启用或禁用元素(或其他一百个内容),则必须在源中定义该对象的出口并链接该出口通过<!>#8220;接口对象<!>#8221;到UI元素。之后,您可以像编码中的任何其他变量一样使用插座。
IBAction <!>#8211;用户界面对象触发的特殊方法。 Interface Builder识别它们。
@interface Controller
{
IBOutlet id textField; // links to TextField UI object
}
- (IBAction)doAction:(id)sender; // e.g. called when button pushed
有关详细信息,请参阅 Apple Docs
IBAction和IBOutlets用于将您在Interface Builder中创建的界面与您的控制器连接起来。如果您不使用Interface Builder并在代码中完全构建您的界面,您可以在不使用它们的情况下制作程序。但实际上我们大多数人都使用Interface Builder,一旦你想在你的界面中获得一些交互性,你将不得不使用IBActions和IBoutlets。
使用Interface Builder时,可以使用Connections Inspector使用事件处理程序设置事件,事件处理程序应该是具有IBAction修饰符的函数。视图可以与相同类型的参考和IBOutlet修改器链接。
IB出口
- 它是一个 财产.
- 当 nib(IB) 文件被加载时,它成为连接到实例变量的封装数据的一部分。
- 每个连接都会取消存档并重新建立。
IBA动作
- 属性 表示该方法是一个可以从 Interface Builder 中的情节提要连接到的操作。
@-动态模式IB-接口构建器