我有一个显示核心数据的UITableViewController。我的数据实体有5个属性。我想在组表视图中的部分中查看数据。在tableViewController上使用分段控件,我希望在选择A段时按属性A查看它们,选择B时选择属性B,选择C时选择C.
澄清:让我们说房产A是'品牌'。当选择“品牌”细分时,我希望该组的标题为“BrandX”,然后在第一个分组部分列出所有具有品牌X的数据。下一部分将标记为“BrandY”,依此类推。例如,“尺寸”和“材料”细分市场也是如此。
总而言之,一个表视图控制器以三种不同的方式显示表,由分段控件控制。
我尝试对segmentedControl.selectedSegmentIndex使用switch语句,然后为每种情况使用不同的NSSortDescriptors。没用。
我尝试以类似的方式在fetchedResultsController中使用if语句。没发生。
我只是没有看到这个。有想法的人吗?
由于
答案 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];
...
}