如何将标签值从高分到低分?

时间:2012-03-30 16:03:01

标签: iphone objective-c ios xcode

我的视图中有4个标签,分数为

我怎样才能将得分从最高分到最低分?

因为我想将最高分的颜色更改为绿色,将最低分的颜色更改为红色,将两个分数更改为黄色之间

我可以使用此代码

float a = ([label1.text floatValue]);
float b = ([label2.text floatValue]);
if (a > b) { //do something }

但我有4个标签,如果每个标签比其他标签更大或更小,我不想写长标签。

提前致谢

1 个答案:

答案 0 :(得分:1)

首先制作一个有序的标签数组:

NSArray *labels = [NSArray arrayWithObjects:label1, label2, label3, label4, nil];
NSArray *sortedLabels = [labels sortedArrayUsingComparator:^(UILabel *a, UILabel *b) {
    float first = [a.text floatValue];
    float second = [b.text floatValue];
    if (first < second) {
        return NSOrderedAscending;
    else if (first > second) {
        return NSOrderedDescending;
    } else {
        return NSOrderedSame;
    }
}];

然后要获得标签的排名,只需执行

NSUInteger rank = [sortedLabels indexOfObject:aLabel];
// rank goes from 0 to 3, with 0 corresponding to lowest value and 3 corresponding to  highest value