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


 

实际上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 ()
@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

UITableView -- 支持象电话本那样的按首字母索引_第1张图片 UITableView -- 支持象电话本那样的按首字母索引_第2张图片


你可能感兴趣的:(iOS--UI)