zoukankan      html  css  js  c++  java
  • objective-c IBOutletCollection介绍

    objective-c IBOutletCollection介绍

    将UI控件和源码进行链接时,方法的表示方法是IBAction,控件属性对象是IBOutlet。如果想将一个同类型的UI控件作为一个组放在一个集合中,并链接,表示方法就是IBOutletCollection。在Xcode中,这三个所表达的意思都是void,只不过在Xcode中占位表示链接的是一个IB控件。

    添加一个控件组时,我们选择控件按住control键点击鼠标拖到源码中时,在Outlet中选择Outlet Collection。然后将同类的控件按住control键点击鼠标拖到这个OutletCollection中就可以了。
    xcode中创建关联

    然后在源码中生成内容如下:

    @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!

  • 相关阅读:
    技术人员的找工之路(1
    技术人员的找工之路(3)
    Endian的由来
    android平台开发笔记1Spinner不能在sub activity中使用
    谈谈Groupon的成功
    线程安全的同步读写类的模板设计
    项目管理文件package.json
    10个每个开发人员都应该知道的强大JavaScript 解构技术
    绿色下载站上线了(MVC +Telerik开源控件)
    我开发的新浪微博应用“微词典”通过审核,欢迎朋友们试用,多多建议!
  • 原文地址:https://www.cnblogs.com/AbeDay/p/5026904.html
Copyright © 2011-2022 走看看