首页 > 代码库 > 将汉字从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