2011-12-28 76 views
0

我有一個UITableViewController顯示核心數據。我的數據實體有5個屬性。我想查看組表格視圖中的部分數據。在tableViewController上使用分段控件時,我想在選擇A段時選擇屬性A,選擇B時選擇屬性B,選擇C時選擇C。分組表視圖和uisegmented控件

澄清:讓我們說屬性A是'品牌'。當選擇「品牌」細分受衆羣時,我希望組的標題爲「BrandX」,然後在第一個分組部分列出所有擁有品牌X的數據。下一部分將被標記爲'BrandY',依此類推。例如,類似於「尺寸」和「材質」細分受衆羣。

總而言之,一個表格視圖控制器以三種不同的方式顯示錶格,由分段控制控制。

我試着對segmentedControl.selectedSegmentIndex使用switch語句,然後對每種情況使用不同的NSSortDescriptors。沒有工作。

我試着以類似的方式在fetchedResultsController中使用if語句。沒有發生。

我只是沒有看到這一點。任何人有想法?

感謝

回答

1

爲了使這項工作,你將在每次SegmentControl改變時重新創建fetchedResultsController。設置一個IBAction爲對於將段控制:

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

在fetchedResultsController設置你的SORTKEY使用selectedSegmentIndex,並 然後用它來設置排序描述符和部分namekeypath並確保緩存設置爲無。

- (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設置爲零。非常感謝。 – Kurt 2011-12-28 03:18:02