索引使用原则
-索引标题不能与显示的标题完全一样
-索引标题应具有代表性,能代表一个数据集合
-如果采用了索引列表视图,一般情况下就不再使用扩展视图
代码
#import "ViewController.h"
@interface ViewController ()
/** 从plist文件中读取的数据 */
@property (nonatomic, strong) NSDictionary *dictData;
/** 小组名 */
@property (nonatomic, strong) NSArray *listGroupname;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSBundle *bundle = [NSBundle mainBundle];
NSString *plistPath = [bundle pathForResource:@"team_dictionary" ofType:@"plist"];
//获得plist文件中的全部数据
self.dictData = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
NSArray *tempArray = [self.dictData allKeys];
//对key进行排序
self.listGroupname = [tempArray sortedArrayUsingSelector:@selector(compare:)];
}
#pragma mark - UITableView代理方法
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
//按照节索引从小组名数组中获得组名
NSString *groupName = [self.listGroupname objectAtIndex:section];
//组名为Key,从字典中取出球队数组的集合
NSArray *listTeams = [self.dictData objectForKey:groupName];
return listTeams.count;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return self.listGroupname.count;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
NSString *groupName = [self.listGroupname objectAtIndex:section];
return groupName;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"CellIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
//按照节索引,从小组名数组中获得组名
NSString *groupName = [self.listGroupname objectAtIndex:indexPath.section];
//按照组名为key,从字典中取出球队数组集合
NSArray *listTeams = [self.dictData objectForKey:groupName];
cell.textLabel.text = [listTeams objectAtIndex:indexPath.row];
return cell;
}
//显示侧方索引
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
NSMutableArray *listTitles = [[NSMutableArray alloc] initWithCapacity:[self.listGroupname count]];
//去掉字段中的“组”字
for (NSString *item in self.listGroupname)
{
NSString *title = [item substringToIndex:1];
[listTitles addObject:title];
}
return listTitles;
}
@end
网友评论