2011-06-27 8 views
0

私は、UITableViewを生成するNSArrayを持っています。フィールドの1つはNSStringです。 cellForRowAtIndexPath:NSStringの色を変更するメソッド(NSStringが保持する値を基本的に決定し、ラベルの色を設定する)に基づいて呼び出される別のメソッドがあります。私は別の方法は色を決定するので、この場合の色で並べ替える方法を決定しようとしていますし、色は#define値です。NSArrayをオブジェクト型で並べ替える

私は、各メンバーが色(0,1,2のint値)を持つ配列を作成しようと考えていました。そこから、これらの数値を並べ替えることができます。したがって、すべての0が最初、次に1、2、またはそのようなものになります。

しかし、私はすべてを追跡する方法を知らない。私は元の配列で配列を作成したので、この配列に基づいてソートすると、実際のマーカーオブジェクトをどのように変更できますか?私はこれが最善の方法であるかどうかは分かりませんが、そうであれば、どのようにすべての並べ替えを追跡するでしょう。ありがとう。

答えて

0

色番号

- (NSComparisonResult)compare:(MyClass *) otherObject { 
     return [self.colorNum compare:otherObject.colorNum ]; 
    } 

    NSArray *sortedArray; 
    mySortedArray = [myUnsortedArray sortedArrayUsingSelector:@selector(compare:)]; 

して配列をソートするための基準として、以下のコードを使用して、以下のSOポストをチェックしてください。

How to sort an NSMutableArray of objects by a member of its class, that is an int or float

+0

あなたは '比較することを明確にすべきである:'メソッドはMyClass' 'で実装する必要があります。 – RyanR

+0

colorNumはオブジェクトのivarではありません。これは、NSStringの内容に基づいてcellForRowAtIndexPathメソッドで決定されます。これはまだ動作しますか? – Crystal

+0

色で並べ替える場合は、並べ替える色が必要ですか?だからあなたの文字列と色を保持し、文字列の代わりに配列に格納する新しいクラスを作成するか、cellForRowAtIndexPathで使用するのと同じコードを使用して色を見つけます。その最後のアイデアは、文字列の色を決定するのが非常に迅速かつ簡単な場合にのみ意味があります。 – Caleb

関連する問題