objective-c IBOutletCollection介绍
objective-c IBOutletCollection介绍
将UI控件和源码进行链接时,方法的表示方法是IBAction,控件属性对象是IBOutlet。如果想将一个同类型的UI控件作为一个组放在一个集合中,并链接,表示方法就是IBOutletCollection。在Xcode中,这三个所表达的意思都是void,只不过在Xcode中占位表示链接的是一个IB控件。
添加一个控件组时,我们选择控件按住control键点击鼠标拖到源码中时,在Outlet中选择Outlet Collection。然后将同类的控件按住control键点击鼠标拖到这个OutletCollection中就可以了。
然后在源码中生成内容如下:
@property (strong, nonatomic) IBOutletCollection(UIButton) NSArray *buttons;
这里我添加了6个UIButton控件到View中,并将这6个UIButton都添加同一个onClick事件,当用户点击UIButton时,触发onClick事件。
从上面系统生成的代码中可以看到这个UIButton的控件组是存放在一个NSArray的数组中的。那么这些UIButton在NSArray中的存放顺序是怎样的呢?
UIButton通过IBOutletCollection方式添加到NSArray数组中时,是以我们添加链接的顺序添加到数组中的,即我先链接的控件就在数组的最前面。为了验证这一点,我从最后面一个开始添加UIButton到这个buttons的数组中,然后如下定义onClick事件,使其当用户点击按钮时,打印这个UIButton在buttons中的索引值:
- (IBAction)onClick:(id)sender {
NSLog(@"Button At index %d has been clicked!", [_buttons indexOfObject:sender]);
}
运行后我从最后一个开始点击,然后打印结果如下:
2013-11-24 01:26:55.051 UINavigationController的使用[1464:a0b] Button At index 0 has been clicked!
2013-11-24 01:26:58.644 UINavigationController的使用[1464:a0b] Button At index 1 has been clicked!
2013-11-24 01:42:38.699 UINavigationController的使用[1464:a0b] Button At index 2 has been clicked!
2013-11-24 01:42:40.027 UINavigationController的使用[1464:a0b] Button At index 3 has been clicked!
2013-11-24 01:42:40.918 UINavigationController的使用[1464:a0b] Button At index 4 has been clicked!
2013-11-24 01:42:42.060 UINavigationController的使用[1464:a0b] Button At index 5 has been clicked!
objective-c IBOutletCollection介绍的更多相关文章
- DeepLearning.ai学习笔记(四)卷积神经网络 -- week4 特殊应用:人力脸识别和神经风格转换
一.什么是人脸识别 老实说这一节中的人脸识别技术的演示的确很牛bi,但是演技好尴尬,233333 啥是人脸识别就不用介绍了,下面笔记会介绍如何实现人脸识别. 二.One-shot(一次)学习 假设我们 ...
- Automake
Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...
- Objective C Runtime 开发介绍
简介 Objective c 语言尽可能的把决定从编译推迟到链接到运行时.只要可能,它就会动态的处理事情.这就意味着它不仅仅需要一个编译器,也需要一个运行时系统来执行变异好的代码.运行时系统就好像是O ...
- ORACLE优化器RBO与CBO介绍总结
RBO和CBO的基本概念 Oracle数据库中的优化器又叫查询优化器(Query Optimizer).它是SQL分析和执行的优化工具,它负责生成.制定SQL的执行计划.Oracle的优化器有两种,基 ...
- Objective C ARC 使用及原理
手把手教你ARC ,里面介绍了ARC的一些特性, 还有将非ARC工程转换成ARC工程的方法 ARC 苹果官方文档 下面用我自己的话介绍一下ARC,并将看文档过程中的疑问和答案写下来.下面有些是翻译,但 ...
- Repository 设计模式介绍
在DDD设计中大家都会使用Repository pattern来获取domain model所需要的数据. 1.什么是Repository? "A Repository mediates b ...
- iOS Block详细介绍(block实现)
Block的实现 数据结构定义 block的数据结构定义如下图 对应的结构体定义如下: struct Block_descriptor { unsigned long int reserved; un ...
- iphone 使用 soap 服务 介绍
iphone 使用 soap 服务 介绍 目前比较常用的有几个办法: 1. WSDL to Objective C自动根据wsdl文件生成ios可以直接调用的Objective-C (Cocoa) 代 ...
- iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用
swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...
随机推荐
- 关于script,first,second,third=argv运行出错的问题
from sys import argv input(argv) #python自带的IDLE直接执行不能提供命令行参数 script,first,second,third=argv print(&q ...
- Shell之test
test命令用法.功能:检查文件和比较值 1)判断表达式 if test (表达式为真) if test !表达式为假 test 表达式1 –a 表达式2 两个表达式 ...
- 跨平台的WatiForSingleObject实现
移植win32程序时,有一个难点就是涉及到内核对象的操作,需要模拟win32的实现. 其中比较奇葩的一个是WaitForSingleObject系列. Linux中没有类似的timeout实现,模拟这 ...
- C#反射(一) 【转】
在还不太熟悉反射的昨天,以为反射很神秘,在网上到处找答案.今天找了段代码敲了一下,茅塞顿开!其实反射也就那么简单的一回事! 反射是一种机制,通过这种机制我们可以知道一个未知类型的类型信息.比如, ...
- Android模拟器常用命令收录
一.Linux命令 1.挂载/systme分区为读写状态 mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system 2.切换为Root用户 ...
- c printf
printf的格式控制的完整格式:% - 0 m.n l或h 格式字符下面对组成格式说明的各项加以说明:①%:表示格式说明的起始符号,不可缺少.②-:有-表示左对齐输出,如省略表示右对齐输出.③0:有 ...
- Astyle:代码格式化工具简明指南
astyle是一个我自己常用的开放源码工具.它可以方便的将程序代码格式化成自己想要的样式而不必人工修改.本来嘛,作为高等生物应该优先去做一些智慧的事情,而不是把时间消耗在机器可以完美完成的事情上. 想 ...
- Light OJ 1038 - Race to 1 Again(概率DP)
题目的意思是说任何一个大于1的整数,经过若干次除以自己的因子之后可以变为1, 求该变换字数的数学期望值. 题目分析: 我们设置dp[n] 为数字n的期望.假设n的因子为k1, k2, k3.... ...
- (转载)MySQL关键字ORDER BY的使用
例子: mysql), d_id ), name ), age ), sex ), homeaddr )); // 可以看到首先按照d_id进行升序排列,排列好了之后, // 若d_id字段中有相同的 ...
- JQuery中trim函数的具体实现代码
由于Javascript 1.8.1 之前的版本,没有内置 trim 函数,所以 JQuery 对它有自己的实现.不同的JQuery版本,trim函数的实现也不尽相同. 阅读本文需要掌握正则表达式用法 ...