dispatch_time_t popTime =
dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
/* Добавляем актуальную дату к имеющемуся списку дат;
Таким образом, при обновлении табличного вида новый информационный
элемент на экране будет находиться над старым и пользователь увидит
разницу во времени до и после обновления */
[self.allTimes addObject: [NSDate date]];
[self.refreshControl endRefreshing];
NSIndexPath *indexPathOfNewRow =
[NSIndexPath indexPathForRow: self.allTimes.count-1 inSection:0];
[self.tableView
insertRowsAtIndexPaths:@[indexPathOfNewRow]
withRowAnimation: UITableViewRowAnimationAutomatic];
});
}
Последний важный момент: мы записываем дату в табличный вид посредством методов делегата и источника данных табличного вида:
— (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
— (NSInteger) tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section{
return self.allTimes.count;
}
— (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView
dequeueReusableCellWithIdentifier: CellIdentifier
forIndexPath: indexPath];
cell.textLabel.text = [NSString stringWithFormat:@"%@",
self.allTimes[indexPath.row]];
return cell;
}
Опробуйте в эмуляторе или на устройстве то, что у нас получилось. Открыв приложение, вы сразу заметите только одно значение даты и времени в списке. Но если потянуть таблицу вниз, то постепенно перед вами будут открываться новые элементы (см. рис. 4.24).
См. также
Раздел 4.9.
Глава 5. Выстраивание сложных макетов с помощью сборных видов
5.0. Введение
Табличные виды очень хороши. Действительно. Тем не менее они отличаются удручающей негибкостью, так как их содержимое всегда ориентировано по вертикали. Это не настоящие таблицы-сетки, поэтому они и функционально не похожи на сетки. Однако программист может оказаться в ситуации, когда требуется отрисовать на экране таблицеподобный компонент со строками и столбцами, а затем поместить в каждую из ячеек различные элементы пользовательского интерфейса и каждый элемент сделать интерактивным. В табличном виде у вас фактически имеется всего один столбец с множеством строк. Если вы хотите создать иллюзию множества столбцов, то придется предоставить собственную специальную ячейку и оформить ее так, как будто она состоит из нескольких столбцов.
Сборные виды, так же как табличные виды, состоят из ячеек, причем каждая ячейка содержит элемент или вид, отображаемый на экране. Ячейки в сборных видах доступны для повторного использования, причем их можно изымать из очереди и возвращать на экран в любой момент, когда это можно и нужно. Но компоновка страницы может быть практически любой вообразимой на двухмерном экране.
Именно поэтому в 6-й версии iOS компания Apple впервые внедрила сборные виды. Сборный вид можно сравнить с сильно усовершенствованным прокручиваемым видом. У него есть источник данных и делегат, как и у табличного вида. Но он обладает одним свойством, делающим его совершенно несхожим с табличным или прокручиваемым видами. Речь идет о
В сущности, макетный объект вычисляет, где должен быть размещен каждый элемент, входящий в состав сборного вида. Однако Apple