首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IBOutlet混淆

IBOutlet混淆
EN

Stack Overflow用户
提问于 2012-01-21 17:57:56
回答 3查看 725关注 0票数 2

在从Java/Android迁移到iOS/Objective之后,我正在经历一些混乱阶段,无法理解或找到以下方面的任何可行的解释:

  • IBOutlet是什么?
  • 有什么用途?
  • 是否必须在每个实现文件或头文件中定义IBoutlet代码?

有和我们在java里有类似的东西吗?

EN

回答 3

Stack Overflow用户

发布于 2012-01-21 18:20:28

IBOutlet

假设您向您的UILabel接口文件中添加了一个.xib,并且您希望稍后在运行时更改标签的文本,那么您必须以某种方式引用它。通过添加IBOutlet关键字,您基本上可以告诉您的..xib文件,您希望将现有的UILabel连接到此属性。接口生成器将识别,并使您有可能将标签连接到您的代码。

代码语言:javascript
运行
复制
@property (unsafe_unretained, nonatomic) IBOutlet UILabel *label;

但是,如果您不想在从.xib初始化标签之后更改它,那么您就不必创建属性了。

IBAction

同样的情况也适用于UIButton上的函数。例如,如果您在..xib文件中添加了一个按钮,并且希望在单击按钮事件上触发一个函数,那么您可以这样声明您的函数。

代码语言:javascript
运行
复制
- (IBAction)buttonClicked:(id)sender;

同样,IBAction关键字简单地告诉Interface,您希望将此函数连接到..xib文件中的任何内容(在本例中是按钮)。

顺便说一句,只要简单地声明为IBOutlet或IBAction,就不会发生任何事情。您总是必须回到Interface中,并按需要将所有内容连接起来。

票数 4
EN

Stack Overflow用户

发布于 2012-01-21 18:01:42

IBOutlet只是一个“提示”,使编译器能够在.xib文件和头文件之间创建链接。它类似于void,但需要创建到任何接口构建器文件的连接。

票数 1
EN

Stack Overflow用户

发布于 2012-01-22 00:51:49

IBOutlet:如果您将一个变量声明为IBOutlet,则将该变量放在Interface类的出口中。换句话说,您有机会使用Interface (从现在开始)将该变量连接到组件(当然是同一个类)。

IB还有另一个特殊的词:IBAction。如果将方法的返回类型声明为IBAction,则将该方法作为可由Interface对按钮升级或其他操作进行评估的操作。没有必要返回任何特殊的值,只要假设返回值为空。

如果您是iOS中的新手,那么只需提出一个建议:请小心使用Interface,因为所有必须由Interface实例化的变量(比如自定义的UILabel或其他任何东西)都将使用initWithCoder方法而不是init或initWithNibName来执行。我花了很多时间在这上面!

希望能帮上忙。

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

https://stackoverflow.com/questions/8955252

复制
相关文章

相似问题

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