是否可以根据标签对UIView的NSArray集合进行排序?

时间:2010-04-09 22:02:08

标签: iphone sorting uiview nsarray tags

我见过像

这样的例子
[someArray sortUsingSelector:@selector(compare:)];

我正在寻找一个存储UIViews集合的示例,我想根据我在创建新UIView时以编程方式假设的标记按升序或降序对它们进行排序。

如果有人可以提供代码示例或说明非常棒

2 个答案:

答案 0 :(得分:13)

NSArray提供了许多方法来对数组进行排序(所有这些方法都列在NSArray文档中的“排序”标题下)。您可以定义函数,方法或排序描述符,以根据标记进行排序来比较视图。例如,这是使用NSSortDescriptor的实现:

NSSortDescriptor *ascendingSort = [[NSSortDescriptor alloc] initWithKey:@"tag" ascending:YES];
NSSortDescriptor *descendingSort = [[NSSortDescriptor alloc] initWithKey:@"tag" ascending:NO];
NSArray *sortedArray = [someArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:ascendingSort]];

答案 1 :(得分:2)

- (NSComparisonResult)compareTags:(UIView *)view {
    if ([self tag] == [view tag]) return NSOrderedSame;
    if ([self tag] > [view tag]) return NSOrderedDescending;
    return NSOrderedAscending;
}

假设我得到了正确的排序,那就是,这种使用的方法必须在UIView上(很容易用类别完成)。还有其他几种获得相同结果的方法,请参阅文档Sorting Arrays