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!

  • 相关阅读:
    LInux常用命令:总结
    SpringBoot声明式事务(转)
    连接linux客户端工具
    查看servlet 3.0文档方法
    通过spring.io找spring历史版本
    归并排序(比希尔还要快)
    快速排序(比希尔排序还要快)
    希尔排序(交换式和移位式)
    插入排序
    选择排序(时间复杂度O(n^2))
  • 原文地址:https://www.cnblogs.com/AbeDay/p/5026904.html
Copyright © 2011-2022 走看看