В настоящее время я пытаюсь реализовать UITableView
с делегатом и источником данных , который максимально точно копирует функциональность, найденную ABAddressBookUI
класс * Framework1 ABPeoplePickerNavigationController
, но с добавленной возможностью выбирать несколько контактов одновременно (как указано добавлением / удалением дополнительного вида к соответствующему UITableViewCell
).
Все работает нормально, за исключением предоставления локализованных «заголовков указателей разделов» (букв, которые появляются в оверлее прокрутки справа от экрана) для UITableView
, как и должно быть возвращено источником данных метод:
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
Очевидно, я мог бы просто вернуть NSArray
, содержащий NSStrings
A, B, C ... Z, но в идеале я хотел бы, чтобы этот метод возвращал массив всех (заглавных, где это применимо) букв алфавита текущей локали .
Одно многообещающее преимущество было:
[[
NSLocale
currentLocale ] objectForKey:@"NSLocaleExemplarCharacterSet" ]
Но я не могу найти какой-либо существенной документации по этому вопросу, и он возвращает NSCharacterSet
, из которого я не смог извлечь фактические символы (если бы я мог это сделать, тогда NSCharacterSet's capitalizedLetterCharacterSet
также может быть многообещающей отправной точкой).
Я также запустил otool -tV
на платформе AddressBookUI
, которая обнаружила вызов функции ABAddressBookCopySectionIndices()
, в которую ABAddressBookRef
можно передать, чтобы получить именно то, что я ищу ... CFArray локализованного алфавита. Однако , это частная функция, поэтому я не могу использовать ее в своем приложении.
Итак, кто-нибудь знает, поддерживает ли Cocoa Touch эту функцию? И, если нет, есть какие-нибудь идеи относительно того, как ABAddressBookCopyIndices()
работает своим волшебством? Я подозреваю, что библиотека International Components for Unicode вполне может удерживать ключ, но я (пока) не знаком с ее возможностями ...