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

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 просто скрыла (например, мы не можем предложить увеличительное стекло, как в приложении с контактами). Если у кого-то есть идеи по реализации такой функции — поделитесь.


Июль 11th, 2009 at 11:37
Картинки итогового приложения нет(
Июль 11th, 2009 at 15:24
Кхе.. в начале поста итоговый результат… нет?
Июль 12th, 2009 at 09:04
Нет.
Июль 12th, 2009 at 12:59
ну.. только это) если напишете такое приложение буду раз получить от вас скрин на почту. Тогда добавлю его в пост.
Июль 12th, 2009 at 13:48
картинка добавлена.. странно что с первого раза она не запостилась
Июль 12th, 2009 at 16:52
Ага.Теперь все норм.