Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описываются некоторые приемы работы с делегатом представления для выбора страниц в регламентном отчете. После запуска примера выполняются следующие операции:
извлекается представление для выбора страниц в регламентном отчете;
извлекается делегат представления для выбора страниц в регламентном отчете;
извлекается количество страниц в документе;
устанавливается новая текущая страница;
осуществляется переход к текущей странице;
производится перезагрузка представления для выбора страниц;
извлекается миниатюра страницы по заданному индексу с помощью метода <PageSelectorDelegate>.thumbnailByIndex:;
извлекается миниатюра текущей страницы с помощью метода PdfPageSelector.selectedPageView.
Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Отображение регламентного отчёта») следующий код:
// Получаем объект регламентного отчета
MAProceduralReportViewController *proceduralReportController = (MAProceduralReportViewController *)m_controller;
// Получаем массив представлений в регламентном отчете
NSArray *dataViewControllers = [proceduralReportController dataViewControllers];
// Перебираем в цикле представления регламентного отчета
for( UIViewController *controller in dataViewControllers)
{
// Проверяем, является ли текущее представление просмотрщиком листов регламентного отчета
if([controller isMemberOfClass:[MAProceduralReportDataViewController class]])
{
// Получаем представление просмотрщика листов
MAProceduralReportDataViewController *dataViewController =(MAProceduralReportDataViewController *)controller;
// Получаем представление просмотрщика регламентных отчетов
MAProceduralReportDataViewControllerBase *reportDataViewControllerBase = (MAProceduralReportDataViewControllerBase *)dataViewController;
// Получаем представление для выбора страниц
PdfPageSelector *pageSelector = [reportDataViewControllerBase pageSelector];
// Получаем делегат представления для выбора страниц
id<PageSelectorDelegate> pageSelectorDelegate = [pageSelector delegate];
// Проверяем количество страниц в документе
if([pageSelector pagesCount] > 0)
{
// Устанавливаем новую страницу в качестве текущей
[pageSelector setCurrentPage:1];
// Выводим в консоль среды разработки индекс текущей страницы
NSLog(@"Индекс текущей страницы: %d", [pageSelector currentPage]);
// Переходим к текущей странице
[pageSelectorDelegate changePage:[pageSelector currentPage]];
}
// Перезагружаем представление для выбора страниц
[pageSelector reloadData];
// Выводим в консоль среды разработки индекс текущей страницы после перезагрузки представления
NSLog(@"Индекс текущей страницы после перезагрузки представления для выбора страниц: %d", [pageSelector currentPage]);
}
}
В результате выполнения примера на экране мобильного устройства будет отображён регламентный отчет, для которого осуществлен переход к заданной странице:

Также в консоли среды разработки было выведено сообщение, содержащее индекс текущей страницы после установки его значения, а также сообщение с индексом текущей страницы после перезагрузки представления для выбора страниц:
Индекс текущей страницы: 1
Индекс текущей страницы после перезагрузки представления для выбора страниц: 0
Далее в методе executeExample класса ViewController после строк:
// Выводим в консоль среды разработки индекс текущей страницы после перезагрузки отображения NSLog(@"Индекс текущей страницы после перезагрузки представления для выбора страниц: %d", [pageSelector currentPage]);
добавим следующий код:
// Удаляем все дочерние представления окна
NSArray *reportSubviews = [self.view subviews];
for(UIView *subView in reportSubviews)
{
[subView removeFromSuperview];
}
// Устанавливаем цвет фона
[self.view setBackgroundColor:[UIColor whiteColor]];
// Получаем миниатюру страницы по заданному индексу
UIImage *thumbnail = [pageSelectorDelegate thumbnailByIndex:1];
// Выводим на экран мобильного устройства полученное изображение
UIImageView *imageView = [[UIImageView alloc] initWithImage:thumbnail];
[self.view addSubview:imageView];
В результате выполнения обновленного примера на экране мобильного устройства будет отображена миниатюра страницы, полученная с помощью заданного индекса:

Заменим строки:
// Выводим на экран мобильного устройства полученное изображение
UIImageView *imageView = [[UIImageView alloc] initWithImage:thumbnail];
на следующий код:
// Выводим на экран мобильного устройства миниатюру текущей страницы UIImageView *imageView = [pageSelector selectedPageView];
В результате выполнения обновленного примера на экране мобильного устройства будет отображена миниатюра текущей страницы регламентного отчета:

См. также: