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];
}
posted @   令狐葱同学  阅读(827)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示