В этой статье я опишу как сделать полноценную таблицу UITableView в
вашем UIViewController. Так как работать с UITableViewController
несколько сложнее. Этот метод поможет вам сэкономить время. Пример будет
показана на основе работы с Xcode 4.6 и использованием stroryboard.
Удобство такого метода даёт возможность размещать на вашем
UIViewController и другие элементы кроме таблици UITableView, такие как
NavigationBar или UITabbar и они будут нормально смотрется, а не ездить
за последней строчкой таблици(вдруг кто сталкивался с проблемой). Для
начала вам необходимо создать проект, описывать эти простые действия я
не буду так как в интернетах полно документации как это сделать. И так
разместите на вашем UIViewController элемент UITableView как показано на
рисунке:
Теперь создайте класс в своем приложении или используйте класс который создал за вас Xcode. Я назвал свой katalog. Привяжите его к вашему UIViewController если это все таки новый класс и новый UIViewController. Иначе если вы используете уже созданный то делать этого не придется.
Теперь необходимо немного модифицировать h файл:
вот мой katalog.h
это означает, что этот класс будет делегатом
для таблици и источником данных.
IBOutlet UITableView *table; это аутлет для нашего UITableView его нужно подвязать к таблице нажатием правой кнопкой мыши на элементе UITableView и перетянув от New Referencing Outler к вашему класу в левой колонке где показаны все Scene – активности вашего приложения.
Теперь приступим к реализации нашего m файла, в моём случае это katalog.m. В метод - (void)viewDidLoad я добавил 2 строки:
Поскольку наш класс является делегатом и источником данных для таблици необходимо реализовать стандартные методы для UITableView, изначально в m файле их нет поэтому придется добавить. В таблице будет две секции без названия и в каждой их них по одной строке с какими либо данными. Все это опишем в методах таблици.
Вот листинг кода который необходимо добавить в m файл:
Конечно неплохо было бы изменить немножко внешний вид таблицы, для этого в настройках UITableView в storyboard и поставил опцию Grupped в параметре Style как показано на рисунке:
Итак теперь мы можем добавлять строки формируя нашу таблицу, и даже менять внешний вид строк. Но это просторнейший путь и для загрузки в таблицу большого количества данных он не подходит, так как большое количество строк описывая каждую строку вручную трудоёмкий и ненужный процесс. В следующей статьей о работе с Tableview я постараюсь описать более сложные и интересные механизмы по работе с этим элементом.
Теперь создайте класс в своем приложении или используйте класс который создал за вас Xcode. Я назвал свой katalog. Привяжите его к вашему UIViewController если это все таки новый класс и новый UIViewController. Иначе если вы используете уже созданный то делать этого не придется.
Теперь необходимо немного модифицировать h файл:
вот мой katalog.h
#importОбратите внимание на
@interface katalog : UIViewController{
IBOutlet UITableView *table;
}
@end
IBOutlet UITableView *table; это аутлет для нашего UITableView его нужно подвязать к таблице нажатием правой кнопкой мыши на элементе UITableView и перетянув от New Referencing Outler к вашему класу в левой колонке где показаны все Scene – активности вашего приложения.
Теперь приступим к реализации нашего m файла, в моём случае это katalog.m. В метод - (void)viewDidLoad я добавил 2 строки:
[table setDelegate: self];Указывая уже объекту table кто будет делегатом и источником данных для него (по сути для таблици).
[table setDataSource: self];
Поскольку наш класс является делегатом и источником данных для таблици необходимо реализовать стандартные методы для UITableView, изначально в m файле их нет поэтому придется добавить. В таблице будет две секции без названия и в каждой их них по одной строке с какими либо данными. Все это опишем в методах таблици.
Вот листинг кода который необходимо добавить в m файл:
#pragma mark – Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
#warning Potentially incomplete method implementation.
// Количество секций в таблице.
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
#warning Incomplete method implementation.
// Вернуть количество строк в секции.
return 1;
}
/*
Сформировать строки таблици
*/
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSString *lang = [userDefaults objectForKey:@"lang"];
static NSString *CellIdentifier = @»Cell»;
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] ;
}
if(indexPath.row==0 && indexPath.section==0){
cell.text = @»Первая строка»;
//сформировать дату и перевести её в строку
//это просто пример какие данные можно добавить в таблицу
NSDate *d = [NSDate date];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd_HH:mm:ss"];
[formatter setTimeZone:[NSTimeZone timeZoneWithName:@"..."]];
NSString *date = [formatter stringFromDate:d];
cell.detailTextLabel.text = date;
}else if(indexPath.section==1){
cell.text = @»Вторая строка»;
cell.detailTextLabel.text = @»ваши данные»;
}
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
#pragma mark – Table view delegate
/*
Обработка событий нажатия на строки таблици
*/
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.row==0 && indexPath.section==0){
//нажали на первую строку в первой секции
}else{
//нажали на другую строку
}
}
Конечно неплохо было бы изменить немножко внешний вид таблицы, для этого в настройках UITableView в storyboard и поставил опцию Grupped в параметре Style как показано на рисунке:
Итак теперь мы можем добавлять строки формируя нашу таблицу, и даже менять внешний вид строк. Но это просторнейший путь и для загрузки в таблицу большого количества данных он не подходит, так как большое количество строк описывая каждую строку вручную трудоёмкий и ненужный процесс. В следующей статьей о работе с Tableview я постараюсь описать более сложные и интересные механизмы по работе с этим элементом.
Комментариев нет:
Отправить комментарий