iOS通讯录排序与显示

原创 2016年05月31日 18:31:31

参考http://my.oschina.net/u/868062/blog/205098

该网址可以下载pinyin.m和pinyin.h文件 ChineseString的代码也在上面




补充:在使用的过程中发现,如果原字符串中含有下划线这样一些特殊字符串会被删除过滤掉,所以我在ChineseString.m中把

+(NSMutableArray*)ReturnSortChineseArrar:(NSArray*)stringArr

中的该方法调用屏蔽了,不然我在使用的时候该字符串跟原字符串不一致会导致我的一些程序出错。

//这里我自己写了一个递归过滤指定字符串   RemoveSpecialCharacter(会去掉字符串里的一些特殊字符,如果要保留原字符串就把该方法屏蔽)

        

//        chineseString.string = [ChineseString RemoveSpecialCharacter:chineseString.string];

        // NSLog(@"string====%@",chineseString.string);





#import "MyFriendViewController.h"

#import "ChineseString.h"

#import "DetialOfFriendViewController.h"


@interface MyFriendViewController ()<UITableViewDelegate,UITableViewDataSource>

{

    NSMutableArray * indexArray;

    NSMutableArray * letterResultArray;

}

@end


@implementation MyFriendViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    

    self.automaticallyAdjustsScrollViewInsets = YES;

    [self initDataSource];

    [self initInterFace];

}


- (void)initDataSource

{

    indexArray = [[NSMutableArray alloc] init]; //引索数组

    letterResultArray = [[NSMutableArray alloc] init]; //排序结果数组

    NSArray *stringsToSort=[NSArray arrayWithObjects:

                            @"hhh, .$",@"王小东",@"开源中国 ",@"www.oschina.net",

                            @"df源技术",@"社区",@"chuang",@"传播",

                            @"2014",@"2013",@"on the way",@"中国",@"暑假作业",

                            @"键盘", @"just do it",@"hello",@"world",

                            nil];

    

    indexArray = [ChineseString IndexArray:stringsToSort];

    letterResultArray = [ChineseString LetterSortArray:stringsToSort];

}


- (void)initInterFace

{

    

    UITableView * contactsTableView = [[UITableView alloc] initWithFrame:self.view.frame];

    contactsTableView.backgroundColor = [UIColor yellowColor];

    contactsTableView.delegate = self;

    contactsTableView.dataSource = self;

    [self.view addSubview:contactsTableView];

}


#pragma mark - UITableViewDelegate

// SectionHeader的值

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {

    NSString * key = indexArray[section];

    return key;

}

// Section header view

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

{

    UILabel *lab = [[UILabel alloc] init];

    lab.backgroundColor = [UIColor grayColor];

    lab.text = indexArray[section];

    lab.textColor = [UIColor whiteColor];

    return lab;

}

// row height

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

    return 50;

}


#pragma mark Table View Data Source Methods

// 设置右方表格的索引数组

-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView

{

    return indexArray;

}

#pragma mark -

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index

{

    NSLog(@"title===%@",title);

    return index;

}


//  -允许数据源告知必须加载到Table View中的表的Section数。

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

    return [indexArray count];

}

//  -设置表格的行数为数组的元素个数

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return [letterResultArray[section] count];

}

//  -每一行的内容为数组相应索引的值

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    static NSString * cellId = @"contactCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];

    if (cell == nil)

    {

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId];

        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    }

    

    cell.textLabel.text = letterResultArray[indexPath.section][indexPath.row];

    return cell;

}

//  选中cell的操作

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

    NSLog(@"---->%@",letterResultArray[indexPath.section][indexPath.row]);

    

    DetialOfFriendViewController * detailFriendVC = [[DetialOfFriendViewController alloc] init];

    detailFriendVC.personImage = [UIImage imageNamed:@"heard3.jpg"];

    detailFriendVC.nameString = @"小刚";

    detailFriendVC.signatureString = @"I will good good study,day day up!";

    detailFriendVC.phoneNumString = @"18966379935";

    detailFriendVC.sexString = @"";

    detailFriendVC.addressString = @"深圳莆田";

    [self.navigationController pushViewController:detailFriendVC animated:NO];

}







iOS开发------通讯录分组排序(UILocalizedIndexedCollation)

最近写了两篇关于通讯录的博文,通过前两篇博文的简要描述与介绍,基本是能够读出通讯录中的联系人,并能完成对通讯录增删改的操作,但在真实开发中,列出联系人之后是需要分组的,毕竟不能把联系人无规律的排列在t...
  • RunIntoLove
  • RunIntoLove
  • 2016年05月13日 16:23
  • 2276

iOS 通讯录排序

在很多时候需要处理分组信息 和 数据排序 按时间 字母 排序,类似通讯录 如下图做这个 我的思路是用字典··这里按字母ABCD排序 首先把中文转换成拼音, 截取第一个字母 然后插入字典 字母作为...
  • yj229201093
  • yj229201093
  • 2016年03月17日 21:01
  • 2236

ios开发中,联系人列表是怎样通过名字排序分组的(支持中文排序)

在NSString有一个函数localizedCompare:,它的功能是通过自身与给定字符串的比较,返回一个本地化的比较结果,也就是说这个函数是支持汉字比较的。 进一步localizedCo...
  • kpyue
  • kpyue
  • 2016年03月18日 13:12
  • 1697

iOS通讯录联系人列表较完整(中文排序)

代码已上传GitHub https://github.com/6357/YUChineseSorting.git 参考http://www.cnblogs.com/syxchina/archiv...
  • billhepeng
  • billhepeng
  • 2015年08月04日 16:06
  • 8890

ios按字母排序的通讯录

突然想实现一个按照好友姓名的头字母排序的通讯录,然而想了想大致需要实现的技术点。 1:我需要将存储好友姓名的数组变成一个存储好友姓名首字母的数组,并且是按照顺序的。 2:需要将存储好友姓名的数组按照同...
  • JSON_6
  • JSON_6
  • 2016年08月12日 17:13
  • 418

iOS通讯录联系人列表较完整(中文排序)

  • 2014年03月04日 20:55
  • 2.64MB
  • 下载

ios 通讯录姓名排序

  • 2015年04月16日 12:43
  • 128KB
  • 下载

IOS通讯录时时读取并按照首字母排序

  • 2013年02月28日 15:58
  • 155KB
  • 下载

iOS实现联系人按照首字母进行排序

联系人功能的需求一般都会有按照首字母排序,并且会要求同一个姓的就要连续起来中间不能穿插别的姓,百度了一下看到UILocalizedIndexedCollation给我们提供了很方便的排序方法,它不需要...
  • youyou_56
  • youyou_56
  • 2017年12月18日 15:06
  • 283

iOS中获取本地通讯录联系人以及汉字首字母排序

iOS中获取手机通讯录中的联系人信息以及按首字母排序的方法
  • u011619283
  • u011619283
  • 2015年05月15日 16:10
  • 3824
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS通讯录排序与显示
举报原因:
原因补充:

(最多只允许输入30个字)