2011-06-27 22 views
0

これを行う最善の方法は何ですか?私は現在、ちょうどソートそうのようなsortDescriptorを使用して昇順:ボタンを使用して昇順または降順ソートを決定する

NSSortDescriptor *Descriptor = [[[NSSortDescriptor alloc] initWithKey:@"Name" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)] autorelease]; 

を今、私は、ユーザーが降順または昇順でソートしたいかどうかを判断するために使用されているチェックボタンがある場合は、これを処理するための最良の方法は何ですか? sortDescriptorを作成する前にcheckButtonの状態をチェックしますか?そして、ユーザーが新しいソートモードでデータを表示する方法を実行し、反対のタイプ(昇順または降順)の別のsortDescriptorを作成する?ありがとうを。

答えて

0

(もう一度チェックボタンに当たった場合、私はフックしたいですボタンをソート記述子を作成して結果をフェッチする機能に変更します。

デフォルトを選択し、これをユーザーとの対話なしでデフォルトのソートタイプとして使用しますボタンを使用してユーザーの好みを変更することができます。

これは便利ですか?

0
@interface MyController... { 
    BOOL _sortAscending; 
} 

@implementation MyController 

(IBAction)swapSort { 
    _sortAscending = !_sortAscending; 

    NSSortDescriptor *Descriptor = [[[NSSortDescriptor alloc] initWithKey:@"Name" ascending:_sortAscending selector:@selector(localizedCaseInsensitiveCompare:)] autorelease]; 
    //whatever else you need to do 
} 
0

本質的には、はい。

私はあなたが基本的に自分自身に答えてくれるので、なぜこの質問をしているのか不思議です(一連の「すべきか?」という質問)。

あなたの記述は、かなり一般的なパターンです。しかし、ボタンはソート順を決定しません。あなたのアプリは、並べ替え順や他のものを含む設定を保持しています。構成には常にソート順が含まれており、ボタンを使用するとソート順を変更できます。 Configurationを使用するものは、更新が必要なビューを更新できるように、変更時に通知を受ける必要があります。

これを行うにはさまざまな方法があり、すべての状況に対して正しい方法はありません。おそらくボタンはソート順を更新したことをテーブルに伝える責任があります。あるいは、テーブルは構成の変更を監視する責任があります。どちらの方法でも動作します。

関連する問題