【发布时间】:2010-07-01 20:09:41
【问题描述】:
我目前正在尝试使用delegate 和data source 实现UITableView,它尽可能接近地复制ABAddressBookUI 框架的ABPeoplePickerNavigationController 类的功能,但增加了以下功能:一次选择多个联系人(通过将附件视图添加/删除到相应的UITableViewCell 来指示)。
一切正常,除了为UITableView 提供本地化的“部分索引标题”(出现在屏幕右侧的滚动覆盖中的字母),应该由data source 返回方法:
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
显然,我可以只返回一个包含 NSStrings A、B、C ...Z 的 NSArray,但理想情况下,我希望此方法返回所有(大写,如果适用)的数组当前语言环境的字母。
一个有希望的领先优势是:
[[NSLocalecurrentLocale ] objectForKey:@"NSLocaleExemplarCharacterSet" ]
但我找不到任何重要的文档,它返回一个 NSCharacterSet,我无法从中提取实际字符(如果我能做到,那么 NSCharacterSet 的 capitalizedLetterCharacterSet 也可能是有希望的起点)。
我还在AddressBookUI 框架上运行了otool -tV,它显示了对函数ABAddressBookCopySectionIndices() 的调用,可以将ABAddressBookRef 传递到该函数中以获得我正在寻找的确切内容……本地化字母表的 CFArray。 但是,这是一个私有函数,所以我不能在我的应用程序中使用它。
那么,有人知道 Cocoa Touch 是否支持这个功能吗?而且,如果没有,有没有关于ABAddressBookCopyIndices() 如何发挥其魔力的想法?我怀疑International Components for Unicode 库可能是关键,但我(目前)还不熟悉它的功能......
【问题讨论】:
-
另一种记录字符集的方法stackoverflow.com/questions/3804270/…
标签: iphone objective-c cocoa-touch abaddressbook