Вы должны использовать табличное представление, настроенное как индекс раздела
См. Руководство по программированию табличного представления для iOS
Заполнение индексированного списка
[...] Индексированный список - это табличное представление в простом стиле, специально настроенное с помощью трех методов UITableViewDataSource:
sectionIndexTitlesForTableView:
tableView:titleForHeaderInSection:
tableView:sectionForSectionIndexTitle:atIndex:
Первый метод возвращает массив строк для использования в качестве элементов индекса (по порядку), второй метод отображает эти строки индекса в заголовки разделов табличного представления (они не обязательно должны быть одинаковыми) и третий метод возвращает индекс раздела, относящийся к записи, которую пользователь коснулся в индексе.
Данные, которые вы используете для заполнения индексированного списка, должны быть организованы так, чтобы отражать эту модель индексации . В частности, вам нужно построить массив массивов. Каждый внутренний массив соответствует разделу в таблице; Массивы секций сортируются (или сортируются) во внешнем массиве в соответствии с преобладающей схемой упорядочения, которая часто является алфавитной схемой (например, от A до Z). Кроме того, элементы в каждом разделе массива сортируются. Вы можете построить и отсортировать этот массив массивов самостоятельно, но, к счастью, класс UILocalizedIndexedCollation делает задачи построения и сортировки этих структур данных и предоставления данных в табличное представление намного проще. Класс также сортирует элементы в массивах в соответствии с текущей локализацией.