zoukankan      html  css  js  c++  java
  • IBOutletCollection 索引获取顺序问题

    在sb中绑定了一个IBOutletCollection后,根据索引获取元素发现和自己拖线时的顺序不同,有时又会根据顺序,不知道是xcode的bug还是本身就是无序的。

    在使用的时候直接排序:

    - (void)viewDidLoad
    {
     [super viewDidLoad];
     // Order the labels based on their y position
     self.labelsArray = [self.labelsArray sortedArrayUsingComparator:^NSComparisonResult(id label1, id label2) {
      if ([label1 frame].origin.y < [label2 frame].origin.y) return NSOrderedAscending;
      else if ([label1 frame].origin.y > [label2 frame].origin.y) return NSOrderedDescending;
      else return NSOrderedSame;
     }];
    }
    

     把数组进行排序:

    @interface NSArray (sortBy)
    - (NSArray*) sortByObjectTag;
    - (NSArray*) sortByUIViewOriginX;
    - (NSArray*) sortByUIViewOriginY;
    @end
    @implementation NSArray (sortBy)
    
    - (NSArray*) sortByObjectTag
    {
     return [self sortedArrayUsingComparator:^NSComparisonResult(id objA, id objB){
      return(
       ([objA tag] < [objB tag]) ? NSOrderedAscending :
       ([objA tag] > [objB tag]) ? NSOrderedDescending :
       NSOrderedSame);
     }];
    }
    
    - (NSArray*) sortByUIViewOriginX
    {
     return [self sortedArrayUsingComparator:^NSComparisonResult(id objA, id objB){
      return(
       ([objA frame].origin.x < [objB frame].origin.x) ? NSOrderedAscending :
       ([objA frame].origin.x > [objB frame].origin.x) ? NSOrderedDescending :
       NSOrderedSame);
     }];
    }
    
    - (NSArray*) sortByUIViewOriginY
    {
     return [self sortedArrayUsingComparator:^NSComparisonResult(id objA, id objB){
      return(
       ([objA frame].origin.y < [objB frame].origin.y) ? NSOrderedAscending :
       ([objA frame].origin.y > [objB frame].origin.y) ? NSOrderedDescending :
       NSOrderedSame);
     }];
    }
    
    @end

    然后包含头文件,你选择了它,该代码可以是:
    - (void)viewDidLoad
    {
     [super viewDidLoad];
     // Order the labels based on their y position
     self.labelsArray = [self.labelsArray sortByUIViewOriginY];
    }
  • 相关阅读:
    fatal error C1902: 程序数据库管理器不匹配;请检查安装 (zz)
    c++ std string reserve 测试
    2018年长沙理工大学第十三届程序设计竞赛
    2018年东北农业大学春季校赛
    从本质看海明码——海明码的由来
    CodeForces475
    一维背包问题
    2018年长沙理工大学第十三届程序设计竞赛 箱庭的股市
    高精度加法模板
    for,while,do while
  • 原文地址:https://www.cnblogs.com/lacklock/p/3763517.html
Copyright © 2011-2022 走看看