需求:
许多的银行展示在TableView上,需要加上UITableView的右侧索引功能、方便用户快速选择。类似通讯录的功能。
原理:
在Objective C语言中,字符串是以unicode进行编码的。在unicode字符集中,汉字的编码范围为4E00 到 9FA5 之间(即从第19968开始的20902个字符是中文简体字符)。我们把这些字符的拼音首字母按照顺序都存放在一个char数组中。当我们查找一个汉字的拼音首字母时,只需把这个汉字的unicode码(即char强制转换为int)减去19968,然后用这个数字作为索引去找char数组中存放的字母即可。参见pinyin.c
文件。
获取银行名称首汉字的拼音首字母,然后根据首字母去构建二维数组,便于在UITableView的section下的展示。
tableView索引的生成需要回调代理方法:
//索引标题
-(NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
return self.sectionTitles;
}
//点击索引跳转到相应位置
-(NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
NSIndexPath *selectIndexPath = [NSIndexPath indexPathForRow:0 inSection:index];
if (![self.contentArrs[index] count]) {
return 0;
}else{
[tableView scrollToRowAtIndexPath:selectIndexPath atScrollPosition:UITableViewScrollPositionNone animated:YES];
return index;
}
}
项目具体完整代码项目地址:【点击此处】