|
Июл
08
|
В большинстве случаев, выбрав элемент из списка, пользователь загружает подробные сведения по нему в отдельном представлении. “UITableView” отвечает только за отображение списка элементов — переходы от списка к детальному представлению элемента контролирует “UINavigationController“. Таким образом, табличное представление всегда взаимодействует с контроллером навигации, и наоборот. Вот как выглядит готовое приложение:

Создание проекта
Выполнив “File -> New Project“, в разделе “iPhone OS” выберите “Navigation-Based Application“, чтобы создать новый проект XCode. Присвоив ему имя, сохраните проект (свой я назвал “TableView“). Шаблон “Navigation-Based Application” уже содержит связанные контроллер навигации и табличное представление — ручной настройки не требуется.
Источник данных
Поскольку отображаться в табличном представлении будут не 1–2 элемента, а целый список, необходим источник, содержащий наши данные — эту информацию мы передадим для обработки табличному представлению. Источником данных могут выступать файлы XML, базы или массив. Чтобы не усложнять урок, в качестве источника данных для табличного приложения выберу массив “NSMutableArray“. Для заполнения можно воспользоваться файлами XML или базой данных SQLLite. Опять же для упрощения массив будет включать строки, а не пользовательские объекты.
Первым делом создаем источник данных и добавляем в него элементы, которые будут выводиться в табличном представлении. Для создания источника данных воспользуемся методом “viewDidLoad” из контроллера “RootViewController“, вызываемого при загрузке приложения. Вот как выглядит заголовочный файл и метод “viewDidLoad” в файле реализации:
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 | #import <UIKit/UIKit.h> @interface RootViewController : UITableViewController { NSMutableArray *listOfItems; } @end //Задекларированный в "RootViewController.m" метод "viewDidLoad" - (void)viewDidLoad { [super viewDidLoad]; //Инициализация массива listOfItems = [[NSMutableArray alloc] init]; //Добавление элементов [listOfItems addObject:@"Iceland"]; [listOfItems addObject:@"Greenland"]; [listOfItems addObject:@"Switzerland"]; [listOfItems addObject:@"Norway"]; [listOfItems addObject:@"New Zealand"]; [listOfItems addObject:@"Greece"]; [listOfItems addObject:@"Rome"]; [listOfItems addObject:@"Ireland"]; //Настройка заголовка self.navigationItem.title = @"Countries"; } //Задекларированный в "RootViewController.m" метод "dealloc" - (void)dealloc { [listOfItems release]; [super dealloc]; } |
Массив “listOfItems” декларируется в файле “RootViewController.h” и относится к типу “NSMutableArray“. Освобождается он, как показано выше, в методе “dealloc“.
В методе “viewDidLoad” выделяем память и инициализируем массив, добавляя к нему восемь объектов. Панель навигации перестраивается на представление “Countries”. Теперь нужно каким-то образом сообщить табличному представлению о необходимости отобразить находящиеся в массиве элементы
Настройка количества строк в табличном представлении
Для начала сообщаем табличному представлению о предполагаемом числе строк с помощью “tableView:numberOfRowsInSection“. Метод возвращает целое число — количество строк в табличном представлении. Поскольку массив состоит из восьми объектов, передадим массиву сообщение о подсчете. Код при этом будет выглядеть так:
1 2 3 4 | //файл "RootViewController.m" - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [listOfItems count]; } |
Отображение данных в табличной ячейке
Теперь, когда табличному представлению известно количество отображаемых строк, можно вывести на экран собственно текст ячейки. Напомню, что табличное представление состоит из табличных строк, а строки содержат табличные ячейки. Для этого прибегнем к помощи “tableView:cellForRowAtIndexPath“, вызвав метод n-ное число раз, где n — величина, возвращаемая в “tableView:numberOfRowsInSection“. Метод предоставляет “indexPath” (тип “NSIndexPath“). С помощью данного значения мы сможем выяснить текущий номер строки, намеченной для отображения табличным представлением. Вот как выглядит код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | //файл "RootViewController.m" - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; } // Настройка ячейки... NSString *cellValue = [listOfItems objectAtIndex:indexPath.row]; cell.text = cellValue; return cell; } |
В приведенном выше коде сначала при необходимости инициализируем ячейку. После этого получаем от массива строку, передавая получателю метод “objectAtIndex” с текущим номером строки. Затем “cellValue” настраивается на текст ячейки, и ячейка возвращается. Запустив приложение, увидите восемь строк в “UITableView“.
Заключение
С “UITableView” отображение списка элементов — элементарная задача, для которой достаточно настроить пару простых методов. Надеюсь, этот урок даст представление о том, с чего начинать. В следующем уроке мы рассмотрим детализированное представление и передачу ему данных.

(7 голосов, средний: 4.86 из 5)
Последние комментарии
Всем ! Заходите на Фан-Футбол...
Windows Phone MarketPlace -...
Планируем приобрести дробемет и...
Как добавить в...
currentTitle = [[NSMutableString alloc] init];...