Видео с уроком 29 находится здесь.
В этом уроке рассмотрены таблицы UITableView с созданием ячеек динамически в коде.
Саму таблицу в данном уроке создают через сторибоард и делают аутлет tableView
@property (weak, nonatomic) IBOutlet UITableView *tableView;
Для динамического создания ячеек подписываем класс на протокол UITableViewDataSource:
Для того, чтобы в коде сдвинуть таблицу (чтобы на залазить на строку с батареей и связью) используются смещения Inset:
Затем вызывается функция определяющая название заголовка (header) секции (по её номеру):
В данном случае возвращается - устанавливается в качестве заголовка секции название категории (family) шрифта по номеру (section).
Затем вызывается функция определяющая количество строк в секции:
// Метод dequeueReusableCellWithIdentifier:identifier возвращает ссылку на ячейку UITableViewCell по индетификатуру, если ячейка создана и можно её использовать повторно
Исходный текст урока 29.
Домашнее задание к уроку 29:
Ученик.
1. Создайте таблицу которая содержит 1000 разных ячеек.
2. для каждой ячейки генирируйте радномный цвет.
3. RGB данные пишите в тексте ячейки, например: RGB(10,20,255)
4. Также раскрашивайте текст ячейки этим цветом.
Студент.
5. Теперь создайте класс, который содержит цвет и нейм.
6. В viewDidLoad сгенерируйте 1000 объектов такого класса по принципу из ученика
7. Положите их в массив и отобразите в таблице
8. В этом случае когда вы будете листать назад вы увидете те же ячейки, что там и были, а не новые рандомные
Мастер.
9. Возвращаемся к слудентам. Сгенерируйте 20-30 разных студентов.
10. В таблице создавайте не дефаулт ячейку а Value1. В этом случае у вас появится еще одна UILabel - detailLabel.
11. В textLabel пишите имя и фамилию студента, а в detailLabel его средний бал.
12. Если средний бал низкий - окрашивайте имя студента в красный цвет
13. Отсортируйте студентов в алфовитном порядке и отобразите в таблице
Супермен.
14. Средний бал для студентов ставьте рандомно от 2 до 5
15. После того, как вы сгенерировали 30 студентов вам надо их разбить на группы:
отличники, хорошисты, троечники и двоечники
16. Каждая группа это секция с соответствующим названием.
17. Студенты внутри своих групп должны быть в алфовитном порядке
18. Отобразите группы студентов с их оченками в таблице.
Mission Impossible!
19. Добавьте к супермену еще одну секцию, в которой вы отобразите 10 моделей цветов из задания Студент.
20. Помните, это должно быть 2 разных типа ячеек Value1 для студентов и Default для цветов.
Не забудьте показывать скриншоты!
В этом уроке рассмотрены таблицы UITableView с созданием ячеек динамически в коде.
Саму таблицу в данном уроке создают через сторибоард и делают аутлет tableView
@property (weak, nonatomic) IBOutlet UITableView *tableView;
Для динамического создания ячеек подписываем класс на протокол UITableViewDataSource:
@interface ViewController : UIViewController <UITableViewDataSource>
Для того, чтобы в коде сдвинуть таблицу (чтобы на залазить на строку с батареей и связью) используются смещения Inset:
UIEdgeInsets inset=UIEdgeInsetsMake(20, 0, 0, 0);
self.tableView.contentInset=inset;
self.tableView.scrollIndicatorInsets=inset;
Для динамического создания таблицы переопределяем методы протокола UITableViewDataSource:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
NSLog(@"numberOfSectionsInTableView");
return [[UIFont familyNames] count];
}
Эта функция вызывается первой в ней мы возвращаем количество секций (групп ячеек) в таблице. В данном случае возвращается количество групп (Family Font) шрифтов.Затем вызывается функция определяющая название заголовка (header) секции (по её номеру):
- (nullable NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
NSArray *familyNames=[UIFont familyNames];
return familyNames[section];
}
Затем вызывается функция определяющая количество строк в секции:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
NSLog(@"numberOfRowsInSection: Section= %@",@(section));
NSArray *familyNames=[UIFont familyNames];
NSArray *fontName=[UIFont fontNamesForFamilyName:familyNames[section]];
return [fontName count];
}
Возвращается количество шрифтов данной группы (family) .
Затем вызывается функция создания ячеек-строк:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"cellForRowAtIndexPath:indexPath:section %@,row %@",@(indexPath.section),@(indexPath.row));
// Для оптимизации затрат ресурсов, лучше не создавать каждый раз новый объект -ячейку, а использовать существующий
static NSString *identifier=@"Cell";
UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:identifier];
if (!cell) {
cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
// Метод dequeueReusableCellWithIdentifier:identifier возвращает ссылку на ячейку UITableViewCell по индетификатуру, если ячейка создана и можно её использовать повторно
NSLog(@"Cell Created");
}
else{
NSLog(@"cell reused");
}
NSArray *familyNames=[UIFont familyNames];
NSArray *fontNameArray=[UIFont fontNamesForFamilyName:familyNames[indexPath.section]];
NSString *fontName=fontNameArray[indexPath.row];
cell.textLabel.text=[NSString stringWithFormat:@"%@",fontName];
// Установка текста ячейки и шрифта
UIFont *font = [UIFont fontWithName:fontName size:16];
cell.textLabel.font=font;
return cell;
}
Домашнее задание к уроку 29:
Ученик.
1. Создайте таблицу которая содержит 1000 разных ячеек.
2. для каждой ячейки генирируйте радномный цвет.
3. RGB данные пишите в тексте ячейки, например: RGB(10,20,255)
4. Также раскрашивайте текст ячейки этим цветом.
Выполнено
Студент.
5. Теперь создайте класс, который содержит цвет и нейм.
7. Положите их в массив и отобразите в таблице
8. В этом случае когда вы будете листать назад вы увидете те же ячейки, что там и были, а не новые рандомные
Выполнено
Мастер.
9. Возвращаемся к слудентам. Сгенерируйте 20-30 разных студентов.
10. В таблице создавайте не дефаулт ячейку а Value1. В этом случае у вас появится еще одна UILabel - detailLabel.
11. В textLabel пишите имя и фамилию студента, а в detailLabel его средний бал.
12. Если средний бал низкий - окрашивайте имя студента в красный цвет
13. Отсортируйте студентов в алфовитном порядке и отобразите в таблице
Супермен.
14. Средний бал для студентов ставьте рандомно от 2 до 5
15. После того, как вы сгенерировали 30 студентов вам надо их разбить на группы:
отличники, хорошисты, троечники и двоечники
16. Каждая группа это секция с соответствующим названием.
17. Студенты внутри своих групп должны быть в алфовитном порядке
18. Отобразите группы студентов с их оченками в таблице.
Mission Impossible!
19. Добавьте к супермену еще одну секцию, в которой вы отобразите 10 моделей цветов из задания Студент.
20. Помните, это должно быть 2 разных типа ячеек Value1 для студентов и Default для цветов.
Не забудьте показывать скриншоты!
Комментариев нет:
Отправить комментарий