UITableView 索引的设置
2014-07-28 13:50
211 查看
if (_indexCollation == nil) {
_indexCollation = [UILocalizedIndexedCollation currentCollation];
}
NSArray *localTracks = [NSArray array];
//查找本地音乐
NSEntityDescription * trEty = [NSEntityDescription entityForName:@"Track" inManagedObjectContext:ShareAppDelegate.managedObjectContext];
NSFetchRequest *frq = [[NSFetchRequest alloc]init];
[frq setEntity:trEty];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"beAdded == %@",[NSNumber numberWithBool:YES]];
[frq setPredicate:predicate];
localTracks =[ShareAppDelegate.managedObjectContext executeFetchRequest:frq error:nil];
//每个索引下的数组
NSMutableArray *newLocalTracks = [[NSMutableArray alloc] initWithCapacity:[[_indexCollation sectionTitles] count]];
for (int i = 0; i < [[_indexCollation sectionTitles] count]; i ++) {
NSMutableArray *array2 = [[NSMutableArray alloc] initWithCapacity:1];
[newLocalTracks addObject:array2];
}
for (Track *track in localTracks) {
//判断这个数据应该处于本地索引的那个序列下
NSInteger index = [_indexCollation sectionForObject:track collationStringSelector:@selector(trackTitle)];
NSMutableArray *array = [newLocalTracks objectAtIndex:index];
[array addObject:track];
__tracksCount ++;
}
//处理结果:将结果中统计数为0的结果对应的索引去掉。
for (int i = 0; i < [[_indexCollation sectionTitles] count]; i++) {
NSMutableArray *array = [newLocalTracks objectAtIndex:i];
if (array.count > 0) {
//获得排序结果
NSArray *sortedarray = [_indexCollation sortedArrayFromArray:array collationStringSelector:@selector(trackTitle)];
//替换原来数组
[newLocalTracks replaceObjectAtIndex:i withObject:sortedarray];
}
}
//删选没有内容的array 删除;加载数据到table,重新生成新的曲目数组及索引数组
NSMutableArray *newLocalTracks1 = [NSMutableArray array];
NSMutableArray *newIndexArray = [NSMutableArray array];
for (NSMutableArray *array in newLocalTracks)
{
if ([array count] > 0) {
[newLocalTracks1 addObject:array];
[newIndexArray addObject:[[_indexCollation sectionTitles] objectAtIndex:[newLocalTracks indexOfObject:array]]];
}
}
_tracksArray = [NSMutableArray arrayWithArray:newLocalTracks1];
_indexArray = [NSMutableArray arrayWithArray:newIndexArray];
dispatch_async(dispatch_get_main_queue(), ^{
[_table reloadData];
});
/* 返回索引数组 */
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
return _indexArray;
}
_indexCollation = [UILocalizedIndexedCollation currentCollation];
}
NSArray *localTracks = [NSArray array];
//查找本地音乐
NSEntityDescription * trEty = [NSEntityDescription entityForName:@"Track" inManagedObjectContext:ShareAppDelegate.managedObjectContext];
NSFetchRequest *frq = [[NSFetchRequest alloc]init];
[frq setEntity:trEty];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"beAdded == %@",[NSNumber numberWithBool:YES]];
[frq setPredicate:predicate];
localTracks =[ShareAppDelegate.managedObjectContext executeFetchRequest:frq error:nil];
//每个索引下的数组
NSMutableArray *newLocalTracks = [[NSMutableArray alloc] initWithCapacity:[[_indexCollation sectionTitles] count]];
for (int i = 0; i < [[_indexCollation sectionTitles] count]; i ++) {
NSMutableArray *array2 = [[NSMutableArray alloc] initWithCapacity:1];
[newLocalTracks addObject:array2];
}
for (Track *track in localTracks) {
//判断这个数据应该处于本地索引的那个序列下
NSInteger index = [_indexCollation sectionForObject:track collationStringSelector:@selector(trackTitle)];
NSMutableArray *array = [newLocalTracks objectAtIndex:index];
[array addObject:track];
__tracksCount ++;
}
//处理结果:将结果中统计数为0的结果对应的索引去掉。
for (int i = 0; i < [[_indexCollation sectionTitles] count]; i++) {
NSMutableArray *array = [newLocalTracks objectAtIndex:i];
if (array.count > 0) {
//获得排序结果
NSArray *sortedarray = [_indexCollation sortedArrayFromArray:array collationStringSelector:@selector(trackTitle)];
//替换原来数组
[newLocalTracks replaceObjectAtIndex:i withObject:sortedarray];
}
}
//删选没有内容的array 删除;加载数据到table,重新生成新的曲目数组及索引数组
NSMutableArray *newLocalTracks1 = [NSMutableArray array];
NSMutableArray *newIndexArray = [NSMutableArray array];
for (NSMutableArray *array in newLocalTracks)
{
if ([array count] > 0) {
[newLocalTracks1 addObject:array];
[newIndexArray addObject:[[_indexCollation sectionTitles] objectAtIndex:[newLocalTracks indexOfObject:array]]];
}
}
_tracksArray = [NSMutableArray arrayWithArray:newLocalTracks1];
_indexArray = [NSMutableArray arrayWithArray:newIndexArray];
dispatch_async(dispatch_get_main_queue(), ^{
[_table reloadData];
});
/* 返回索引数组 */
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
return _indexArray;
}
相关文章推荐
- 关于UITableView表索引的颜色设置
- iOS中UITableView的索引设置
- 设置内容IOS开发(51)之UITableView建立索引搜索
- IOS学习笔记-UITableView表索引的颜色设置
- UITableView根据section设置右侧索引
- UITableView设置快速索引字体颜色
- <UI>自定义UITableView的右侧索引
- UITableView Grouped风格时,设置背景颜色的问题
- (3) iphone 开发 从应用程序看UITableView的:分组,分区,索引,工作原理及其变换法则,plist文件数据定义规则
- 设置UITableView可以删除或插入数据的模式
- 对于UITableViewStyleGrouped类型的UITableView的背景色设置问题
- UITableView+UISwitch实现对新闻显示的设置
- 设置UITableView Section的背景颜色和字体颜色-自定义Section
- UITableView 设置标题的方法
- iPhone开发:设置UITableView的一些样式
- 设置UITableView Section的背景颜色和字体颜色 ----------自
- 设置UITableview默认的背景和选择的背景
- UITableView 设置背景图片
- 几种设置UITableView的cell动态高度的方法
- 在UITableView右侧添加索引