Работа с делегатом представления для выбора страниц в регламентном отчете

Требования к операционной системе: iOS 5.0 и выше.

Мобильное устройство: iPad.

Описание

В данном примере описываются некоторые приемы работы с делегатом представления для выбора страниц в регламентном отчете. После запуска примера выполняются следующие операции:

Исходный код

Для выполнения примера необходимо разместить в теле метода 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];

В результате выполнения обновленного примера на экране мобильного устройства будет отображена миниатюра текущей страницы регламентного отчета:

См. также:

Примеры использования компонентов