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