分组表视图和uisegmentedcontrol

时间:2011-12-28 02:40:56

标签: objective-c ios5

我有一个显示核心数据的UITableViewController。我的数据实体有5个属性。我想在组表视图中的部分中查看数据。在tableViewController上使用分段控件,我希望在选择A段时按属性A查看它们,选择B时选择属性B,选择C时选择C.

澄清:让我们说房产A是'品牌'。当选择“品牌”细分时,我希望该组的标题为“BrandX”,然后在第一个分组部分列出所有具有品牌X的数据。下一部分将标记为“BrandY”,依此类推。例如,“尺寸”和“材料”细分市场也是如此。

总而言之,一个表视图控制器以三种不同的方式显示表,由分段控件控制。

我尝试对segmentedControl.selectedSegmentIndex使用switch语句,然后为每种情况使用不同的NSSortDescriptors。没用。

我尝试以类似的方式在fetchedResultsController中使用if语句。没发生。

我只是没有看到这个。有想法的人吗?

由于

1 个答案:

答案 0 :(得分:1)

要使这项工作,您将在每次更改SegmentControl时重新创建fetchedResultsController。为段控件设置IBAction:

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

在fetchedResultsController中使用selectedSegmentIndex设置sortkey,和 然后使用它来设置排序描述符和sectionkeypath部分,并确保将cache设置为nil。

- (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];
    ...
}