Pipe Mania - старый добрый трубопровод… Battery Go! - вся правда о вашем аккумуляторе
Июл 11

Еще один способ ускорить для пользователя получение данных — отображение индекса для табличного представления, о котором и пойдет речь в пятом уроке. Как обычно, воспользуемся кодом предыдущего урока. Вот как будет выглядеть итоговое приложение:

Создание индекса

Для начала нам нужно создать массив с выводимыми на экран индексными значениями. Требуемый тип значений для массива — “NSString“. Согласно документации Apple, стиль табличного представления должен быть установлен на “UITableViewStylePlain“. Однако настройка на “UITableViewStyleGrouped” ошибкой тоже не считается. Массив возвращается в методе “sectionIndexTitlesForTableView“, а код при этом выглядит так:

finalapp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//файл "RootViewController.m"
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {

if(searching)
return nil;

NSMutableArray *tempArray = [[NSMutableArray alloc] init];
[tempArray addObject:@"1"];
[tempArray addObject:@"2"];
[tempArray addObject:@"3"];
[tempArray addObject:@"4"];
[tempArray addObject:@"5"];
[tempArray addObject:@"6"];
[tempArray addObject:@"7"];
[tempArray addObject:@"8"];
[tempArray addObject:@"9"];
[tempArray addObject:@"10"];
[tempArray addObject:@"11"];
[tempArray addObject:@"12"];
[tempArray addObject:@"13"];
[tempArray addObject:@"14"];
[tempArray addObject:@"15"];
[tempArray addObject:@"16"];
[tempArray addObject:@"17"];
[tempArray addObject:@"18"];
[tempArray addObject:@"19"];
[tempArray addObject:@"20"];
[tempArray addObject:@"21"];
[tempArray addObject:@"22"];
[tempArray addObject:@"23"];
[tempArray addObject:@"24"];
[tempArray addObject:@"25"];
[tempArray addObject:@"26"];

return tempArray;
}

Приведенный выше код создает массив и возвращает его. В массив можно добавить буквы — от ‘A’ до ‘Z’. При поиске по табличному представлению массив не возвращается, а индексное представление не отображается.

Обработка событий

При щелчке на элементе индекса выводится начинающийся с него раздел. При этом вызывается событие “tableView:sectionForSectionIndexTitle:atIndex“, возвращающее индекс отображаемого раздела. Поскольку в нашем источнике данных всего 2 раздела и 26 значений индекса, код выглядит следующим образом:

1
2
3
4
5
6
7
8
//файл "RootViewController.m"
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {

if(searching)
return -1;

return index % 2;
}

При поиске по табличному преставлению индекс раздела не возвращается. Исходные данные немного изменены — добавлены текстовые объекты, наглядно демонстрирующие выбор раздела. Поскольку индекс выводится в непосредственной близости от вспомогательного представления, последнее устанавливается на “UITableViewCellAccessoryNone“.

Заключение

Простой реализацией двух методов мы создали для табличного представления индекс. Кстати, думаю, что некоторые методы Apple просто скрыла (например, мы не можем предложить увеличительное стекло, как в приложении с контактами). Если у кого-то есть идеи по реализации такой функции — поделитесь.

Исходный код скачать можно [здесь]

Текст оригинальной статьи на английском языке [здесь]

Уважаемые читатели, данный материал был переведен и подготовлен к публикации проектом LookApp.ru, при публикации на другом сайте ссылка на LookApp.ru обязательна.

1 звезда2 звезд3 звезд4 звезд5 звезд (1 голосов, средний: 5.00 из 5)
Загрузка ... Загрузка ...


6 Responses to “Уроки iPhone SDK: UITableView: индексированное табличное представление”

  1. 1. Batu Says:

    Картинки итогового приложения нет(

  2. 2. Artem Says:

    Кхе.. в начале поста итоговый результат… нет?

  3. 3. Batu Says:

    Нет.

  4. 4. Artem Says:

    ну.. только это) если напишете такое приложение буду раз получить от вас скрин на почту. Тогда добавлю его в пост.

  5. 5. Artem Says:

    картинка добавлена.. странно что с первого раза она не запостилась

  6. 6. Batu Says:

    Ага.Теперь все норм.

Оставьте комментарий