美文网首页
UITableView添加索引

UITableView添加索引

作者: iOS安年 | 来源:发表于2016-10-24 16:08 被阅读27次
索引

索引使用原则

-索引标题不能与显示的标题完全一样
-索引标题应具有代表性,能代表一个数据集合
-如果采用了索引列表视图,一般情况下就不再使用扩展视图

plist文件格式

代码

#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

相关文章

网友评论

      本文标题:UITableView添加索引

      本文链接:https://www.haomeiwen.com/subject/atyluttx.html