首页 > 代码库 > 将汉字从A~Z展示于TableView

将汉字从A~Z展示于TableView

1. 先导入第三方库"pinyin".

2. 数据结构:

    声明一个array属性,如sectionArray, 用来装section的数据。

    array里装dict,dict的value01为section title, value02为section里的cell数据,即又是一个array.    

3. 数据解析:

    得到数组数据后,遍历,先提取汉字数据的第一个字符,如广州的“广”, 利用“pinyin”框架的“pinyinFirstLetter”接口转换字符,如‘”广州“转成了‘g’,再转换成大写字母的NSString结构, 如"G",

    初始化两个mutableArray, 一个装的是“F, D, Y, B, P"之类的数据,一个装的是“广州,深圳,珠海”之类的中文数据。

    将装大写字母的的mutableArran排序下(API:sortUsingComparator), 得到的是”B, D, F, P, Y“排序好的数据。

    遍历大写字母的array,利用NSPredicate将中文数组里符合”B"的数组过滤出来(API:predicateWithFormat:@"%K == %@", @"firstLetter", cityNameArray[i])

    初始化一个临时dict, value01是“B"之类的大写字母,value02是上一步过滤出来数组。

    最后将dict加到已声明的array属性里。 

    此时的数据结构效果是self.sectionArray里装的是dict,dict有个string,如”G", 有个对应的array, 如“广州,贵州”。

4. tableView dataSource && delegate

   a. 多少个section?   返回self.sectionArray.count.

   b. 每个section有多少个row? 返回self.sectionArray里元素dict里的array的count;

   c. 每个section里的headerView是什么?返回个label, text是self.sectionArray里元素dict里的string;

   d. indexPath对应的row是什么?返回个cell,cell里text是self.sectionArray里元素dict里的array的对应内容;

   e. - (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView ?

      遍历self.sectionArray里元素dict里的string,装到临时数组返回过去。

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

      遍历self.sectionArray里元素dict里的string, 与title匹配后返回对应的index.

 

   如此,初步的功能及效果则完成了。效果图:

   

 

将汉字从A~Z展示于TableView