1、案例介绍:具备索引功能的分节表视图,如图01
图01
2、team_dictionary.plist
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC"-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PRopertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>A组</key>
<array>
<string>A1-南非</string>
<string>A2-墨西哥</string>
<string>A3-乌拉圭</string>
<string>A4-法国</string>
</array>
<key>B组</key>
<array>
<string>B1-阿根廷</string>
<string>B2-尼日利亚</string>
<string>B3-韩国</string>
<string>B4-希腊</string>
</array>
<key>C组</key>
<array>
<string>C1-英格兰</string>
<string>C2-美国</string>
<string>C3-阿尔及利亚</string>
<string>C4-斯洛文尼亚</string>
</array>
<key>D组</key>
<array>
<string>D1-德国</string>
<string>D2-澳大利亚</string>
<string>D3-塞尔维亚</string>
<string>D4-加纳</string>
</array>
<key>E组</key>
<array>
<string>E1-荷兰</string>
<string>E2-丹麦</string>
<string>E3-日本</string>
<string>E4-喀麦隆</string>
</array>
<key>F组</key>
<array>
<string>F1-意大利</string>
<string>F2-巴拉圭</string>
<string>F3-斯洛伐克</string>
<string>F4-新西兰</string>
</array>
<key>G组</key>
<array>
<string>G1-巴西</string>
<string>G2-朝鲜</string>
<string>G3-科特迪瓦</string>
<string>G4-葡萄牙</string>
</array>
<key>H组</key>
<array>
<string>H1-西班牙</string>
<string>H2-瑞士</string>
<string>H3-洪都拉斯</string>
<string>H4-智利</string>
</array>
</dict>
</plist>
3、.h
#import<UIKit/UIKit.h>@interfaceCQ24ViewController : UITableViewController<UISearchBarDelegate>//表数据@property (strong,nonatomic) NSDictionary *dictData;//表数据分组名集合@property (strong,nonatomic) NSArray *listGroupname;@end
4、.m
#import"CQ24ViewController.h"@interfaceCQ24ViewController ()@end@implementationCQ24ViewController- (void)viewDidLoad
{
[super viewDidLoad];
NSBundle*mainBundle =[NSBundle mainBundle];
NSString*plistPath = [mainBundle pathForResource:@"team_dictionary"ofType:@"plist"];//1、初始化表格数据dictDataself.dictData =[[NSDictionary alloc] initWithContentsOfFile:plistPath];//2、初始化分组名称,排序NSArray *tempList =[self.dictData allKeys];
self.listGroupname=[tempList sortedArrayUsingSelector:@selector(compare:)];
}- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}#pragmamark 返回分组数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{//1、获取分组名称NSString *groupName =[self.listGroupname objectAtIndex:section];//2、将分组名称作为key,从字典中取出分组数据NSArray *listTeams =[self.dictData objectForKey:groupName];return[listTeams count];
}#pragmamark 填充每个节的Cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{//1、加载一个cellstaticNSString *CellIdentifier =@"CellIdentifier";
UITableViewCell*cell =[tableView dequeueReusableCellWithIdentifier:CellIdentifier];if(cell ==nil) {
cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}//2、获取选择的节NSUInteger section =[indexPath section];//3、获取节名称NSString *groupName =[self.listGroupname objectAtIndex:section];//4、获取节数据NSArray *listTeams =[self.dictData objectForKey:groupName];//5、获取选中节中的行索引NSUInteger row =[indexPath row];//6、设置cell中的textcell.textLabel.text =[listTeams objectAtIndex:row];returncell;
}#pragmamark 节数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{returnself.listGroupname.count;
}#pragmamark 设置节title
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
NSString*groupName =[self.listGroupname objectAtIndex:section];returngroupName;
}#pragmamark 索引
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{//1、存在索引的集合NSMutableArray *listTitles =[[NSMutableArray alloc] initWithCapacity:[self.listGroupname count]];//2、初始化索引集合for(NSString *iteminself.listGroupname) {
NSString*title = [item substringToIndex:1];
[listTitles addObject:title];
}returnlistTitles;
}@end