objective-c IBOutletCollection介绍
2024-08-25 23:03:44
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!
最新文章
- Ueditor百度网页编辑器开发者版java utf-8的使用
- linux下解压被分割的zip文件
- Python多行注释
- 【Xamarin报错】visual studio android 模拟器部署卡住
- 今天遇到一个问题,linq语句的写法,查询动态字段
- uva 11178 Morley&;#39;s Theorem(计算几何-点和直线)
- (转) 学习C++ ->; 引用( References )
- flume日志采集
- [编码解码] Base64 编码换行和+号遍空格的处理
- python之路--day15--常用模块之logging模块
- Android获取定位权限,获取设备所在的经纬度
- sql语句实现行转列练习
- DataX
- SharePoint 多行文本字段设置默认值
- python selenium - web自动化环境搭建
- http和websocket共用同一端口
- Fiddler调式使用(一)深入研究[转载]
- Spring学习手札(一)
- Android(十六 ) android 与蓝牙串口通讯
- 对widget使用WM_SetCallback
热门文章
- 鸟哥的linux私房菜——第12章 正则表达式与文件格式化处理
- 为何要fork()两次来避免产生僵尸进程??
- BootStrap Progressbar 实现大文件上传的进度条
- http server v0.1_http_server.c
- java cpu缓存
- validationEngine[转]
- iOS-NSString-Base64String-Base64原理
- Spring 4 and MyBatis Java Config
- Sqoop安装与使用(sqoop-1.4.5 on hadoop 1.0.4)
- c++重载、覆盖和隐藏