UITableView -- 支持象电话本那样的按首字母索引

来源:互联网 发布:智慧城市大数据 编辑:程序博客网 时间:2024/05/16 10:46

 

实际上UITableView默认就支持象电话本那样的按首字母索引。 更多关于tableView数据的展示,参考UITableViewDataSource。

实现sectionIndexTitlesForTableView 和 sectionForSectionIndexTitle 这两个接口即可。 细节请参考UITableViewDataSource帮助文档。

////  AZViewController.m//  AZTableView--索引////  Created by AndrewZhang on 14-12-13.//  Copyright (c) 2014年 AndrewZhang. All rights reserved.//#import "AZViewController.h"@interface AZViewController ()<UITableViewDataSource,UITableViewDelegate>@property (nonatomic,strong)NSArray *charArray;@end@implementation AZViewController-(NSArray *)charArray{    if (!_charArray) {        NSMutableArray *tempArray=[NSMutableArray arrayWithCapacity:26];        for(char c = 'A';c<='Z';c++)        {            [tempArray addObject:[NSString stringWithFormat:@"%c",c]];        }        _charArray=[tempArray copy];    }    return _charArray;}- (void)viewDidLoad{    [super viewDidLoad];    UITableView *tableView=[[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];    tableView.dataSource=self;    tableView.delegate=self;    [self.view addSubview:tableView];}//隐藏状态栏-(BOOL)prefersStatusBarHidden{    return YES;}//返回每一组的行数- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    if (section % 2 ==0 )    {        return 3;    }else    {        return 4;    }}//创建cell- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{    UITableViewCell *cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil];    switch (indexPath.section) {        case 0:        {            switch (indexPath.row)            {                case 0:cell.textLabel.text=@"啊";break;                case 1:cell.textLabel.text=@"昂啊";break;                case 2:cell.textLabel.text=@"嗷嗷嗷";break;                default:cell.textLabel.text=@"AA";break;            }        }            break;                    case 1:        {            switch (indexPath.row)            {                case 0:cell.textLabel.text=@"啊";break;                case 1:cell.textLabel.text=@"昂啊";break;                case 2:cell.textLabel.text=@"嗷嗷嗷";break;                default:cell.textLabel.text=@"BB";break;            }        }            break;        case 2:        {            switch (indexPath.row)            {                case 0:cell.textLabel.text=@"吧";break;                case 1:cell.textLabel.text=@"宝宝";break;                case 2:cell.textLabel.text=@"不不不";break;                default:cell.textLabel.text=@"BB";break;            }        }            break;        case 3:        {            switch (indexPath.row)            {                case 0:cell.textLabel.text=@"才";break;                case 1:cell.textLabel.text=@"出差";break;                case 2:cell.textLabel.text=@"擦擦擦";break;                default:cell.textLabel.text=@"CC";break;            }        }            break;        case 4:        {            switch (indexPath.row)            {                case 0:cell.textLabel.text=@"的";break;                case 1:cell.textLabel.text=@"弟弟";break;                case 2:cell.textLabel.text=@"对对对";break;                default:cell.textLabel.text=@"DD";break;            }        }            break;        case 5:        {            switch (indexPath.row)            {                case 0:cell.textLabel.text=@"额";break;                case 1:cell.textLabel.text=@"额额";break;                case 2:cell.textLabel.text=@"呃呃呃";break;                default:cell.textLabel.text=@"EE";break;            }        }            break;        case 6:        {            switch (indexPath.row)            {                case 0:cell.textLabel.text=@"飞";break;                case 1:cell.textLabel.text=@"飞飞";break;                case 2:cell.textLabel.text=@"凤飞飞";break;                default:cell.textLabel.text=@"FF";break;            }        }            break;        case 7:        {            switch (indexPath.row)            {                case 0:cell.textLabel.text=@"个";break;                case 1:cell.textLabel.text=@"刚刚";break;                case 2:cell.textLabel.text=@"嘎嘎嘎";break;                default:cell.textLabel.text=@"GG";break;            }        }            break;        case 8:        {            switch (indexPath.row)            {                case 0:cell.textLabel.text=@"好";break;                case 1:cell.textLabel.text=@"好好";break;                case 2:cell.textLabel.text=@"哈哈哈";break;                default:cell.textLabel.text=@"HH";break;            }        }            break;        case 9:        {            switch (indexPath.row)            {                case 0:cell.textLabel.text=@"i";break;                case 1:cell.textLabel.text=@"II";break;                case 2:cell.textLabel.text=@"嗷嗷嗷";break;                default:cell.textLabel.text=@"II";break;            }        }            break;        case 10:        {            switch (indexPath.row)            {                case 0:cell.textLabel.text=@"J";break;                case 1:cell.textLabel.text=@"JJ";break;                case 2:cell.textLabel.text=@"JJJ";break;                default:cell.textLabel.text=@"JJ";break;            }        }            break;                                default:cell.textLabel.text=@"other";            break;    }        return cell;}//有多少组,默认是1组- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{    return self.charArray.count;}//设置每组的标题- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{    if (self.charArray.count==0) {        return @"";    }    return self.charArray[section];}//设置在右边显示索引的标题,例如:ABCDEFG- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{    return self.charArray;}//选中索引标题时,跳转到第几组- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index{    NSInteger count=0;    for (NSString *charTer in self.charArray) {        if ([charTer isEqualToString:title]) {            return count;        }        count++;    }    return 0;}@end



0 0
原创粉丝点击