2011-12-28 11 views
0

私はUITableViewControllerコアデータを表示しています。私のデータエンティティには5つのプロパティがあります。グループテーブルビューでセクション内のデータを表示したいとします。 tableViewControllerのセグメント化されたコントロールを使用して、Aセグメントが選択されている場合はプロパティA、Bが選択されている場合はプロパティB、Cが選択されている場合はプロパティBで表示します。グループ化されたテーブルビューとUisegmentedコントロール

明確にする:プロパティAは「ブランド」としましょう。 「ブランド」セグメントが選択されると、グループのヘッダーに「BrandX」と表示され、最初にグループ化されたセクションにブランドXを持つすべてのデータがグループ化されて一覧表示されます。次のセクションには 'BrandY'というラベルが付けられます。同様に、「サイズ」および「マテリアル」セグメントの場合も同様です。

要約すると、セグメント化されたコントロールによって制御される3つの異なる方法でセクションを表示する1つのテーブルビューコントローラ。

segmentedControl.selectedSegmentIndexのswitchステートメントを使用して、それぞれのケースごとに異なるNSSortDescriptorsを使用してみました。うまくいきませんでした。

私はfetchedResultsControllerのif文も同様の方法で試してみました。起きていません。

私はこれを見ていません。誰でもアイデアを持っていますか?この作品は、あなたのfetchedResultsControllerにSegmentControlが変更されるたびに再作成されますようにするに

おかげ

答えて

1

。 fetchedResultsControllerで

self.fetchedResultsController = nil; // destroys old one 
[self.tableView reloadData]; // tableview will reload and recreate new fetchedResultsController 

がselectedSegmentIndexを使用して、あなたのソートキーを設定し、 はその後、ソート記述子とセクションnamekeypathを設定するためにそれを使用してnilにキャッシュを設定してください:意志セグメント制御用のIBActionを設定します。

- (NSFetchedResultsController *)fetchedResultsController { 
    .... 
    NSString *sortKey = "according to current selected segment"; // set in a switch 
    NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:sortKey ascending:YES]; 
    NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] 
       initWithFetchRequest:fetchRequest 
       managedObjectContext:self.managedObjectContext 
       sectionNameKeyPath:sortKey cacheName:nil]; 
    ... 
} 
+0

ワウエリック。早速のご返事ありがとうございます。魅力のように動作します。私の欠けている情報は、fetchedResultsControllerをnilに設定する必要があるということでした。どうもありがとうございます。 – Kurt

関連する問題