MainViewController.h
@interface RootViewController : UIViewController<UITableViewDelegate,UITableViewDataSource> @property(nonatomic, retain)NSDictionary *dic; @property(nonatomic, retain)NSArray *allKeys;
- (void)viewDidLoad
{
    [super viewDidLoad];
    //创建表视图
    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 20, 320, 460) style:UITableViewStylePlain];
    tableView.delegate = self;
    tableView.dataSource = self;
    [self.view addSubview:tableView];
    [tableView release];
    
    NSString *path = [[NSBundle mainBundle] pathForResource:@"ListData.plist" ofType:nil];//  /ListData.plist
    _dic = [[NSDictionary alloc] initWithContentsOfFile:path];
    
    //取得key
//    _allKeys = [_dic allKeys];
    
    /*
     sortedArrayUsingSelector:遍历数组中的每一个元素,调用后面的方法
     */
    _allKeys = [[[_dic allKeys] sortedArrayUsingSelector:@selector(compare:)] retain];
    
    //设置侧栏的背景颜色
    tableView.sectionIndexBackgroundColor = [UIColor blackColor];
}
/*
 字典的结构
 A : ["asd","ase","aer","add"],
 B : ["bsd","bse","br","bd"],
 C : ["cc","cd"],
 ......
 */
#pragma mark - UITableView dataSource
//设置组的个数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return _dic.count;
}
//设置每组有多少个cell
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    NSString *key = [_allKeys objectAtIndex:section];
    NSArray *value = [_dic objectForKey:key];
    return value.count;
}
//创建cell
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *inde = @"cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:inde];
    
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:inde] autorelease];
    }
    
    NSString *key = [_allKeys objectAtIndex:indexPath.section];
    NSArray *value = [_dic objectForKey:key];
    
    cell.textLabel.text = value[indexPath.row];
    
    return cell;
}
//设置组的头视图标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
   return [_allKeys objectAtIndex:section];
}
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
    return _allKeys;
}
//点击右侧索引栏调用的方法
//返回的是组的索引
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
    NSLog(@"title:%@",title);
    
   NSInteger a = [_allKeys indexOfObject:title];
    
    return a + 2;
    
}
原文地址:http://blog.csdn.net/pengyuan_d/article/details/40615721