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...

iOS 通讯录排序

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

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

ios开发 之 通讯录操作

在ios开发中,  通讯录操作还是比较常见的, 尤其是在社交项目中更为突出.  目前系统提供了两个框架对通讯录进行操作: 1. 兼容iOS9以前的框架 #import 2.iOS9以后...

仿IOS通讯录效果,实现获取手机通讯录、字母排序显示、搜索联系人、拨打电话

1.使用UITableView,实现联系人字母排序、点击字母跳转显示联系人组目录; 2.使用UISearchController,实现联系搜索,动态显示符合查询的联系人; 3.点击通讯录列表项,显示联...

IOS网络开发NSURLSession详解(一)概述

原创blog,转载请注明出处blog.csdn.net/hello_hwc 我的IOS-SDK详解专栏,欢迎关注 http://blog.csdn.net/column/details/huang...

iOS汉字转拼音

微信通讯录列表右侧字母表控件, 着实感觉功能强大, 查找好友只要轻轻一划, 就可以找到好友, 而无需从很长的列表划好几下, 更没必要从标签查找了.  那么问题来了, 字母和姓氏怎么对应的呢? 系...
  • lxlzy
  • lxlzy
  • 2016年08月25日 11:57
  • 622

ios按字母排序的通讯录

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

IOS开发搜索和排序(好友列表 通讯录的实现 searchbar)

一、效果图: 二、概述  实现一个好友列表,可以分为男女两个选项,并且实现搜索和排序功能。我的数据是放在plist文件中。 三、代码简述 代码结构如图,首先自定...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS通讯录排序与显示
举报原因:
原因补充:

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