Отображение панели действий над отчетом

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

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

Описание

В данном примере реализовано отображение всплывающего окна с панелью действий над отчётом. Также в консоль среды разработки выводится описание скриншота содержимого отчета, заголовок отчета и размер PDF-файла с отчётом.

Исходный код

Для выполнения примера необходимо разместить взамен метода executeExample класса ViewController (см. раздел «Отображение экспресс-отчёта») следующий код:

// Функция для выполнения примера
-(void) executeExample {
    // Получаем контроллер представления отчета
    MAExpressAnalysisReportViewController *contr = (MAExpressAnalysisReportViewController*)m_controller;
    // Загружаем состояние отчета, если есть данные состояния
    if([[contr delegate] reportState] != nil)
        [contr loadState];
    else
        [contr saveState];
    // Выводим описание скриншота содержимого отчета
    printf("\nОписание скриншота содержимого отчета: %s\n\n", [[[contr screenshot] description] UTF8String]);
    // Выводим заголовок отчета
    printf("\nЗаголовок отчета: %s\n\n", [[contr reportTitle] UTF8String]);
    if([[contr reportTitle] compare: [contr pdfContentTitle]] != NSComparisonResult::NSOrderedSame){
        // Выводим заголовок PDF-файла с отчётом
        printf("\nЗаголовок PDF-файла с отчётом: %s\n\n", [[contr pdfContentTitle] UTF8String]);
    }
    // Выводим размер PDF-файла с отчётом
    if([contr canGeneratePDFContent]){
        [contr generatePDFWithCompletionBlock:^(NSData * data) {
            printf("\nРазмер PDF-файла с отчётом: %i байт\n\n", [data length]);
        }];
    }
    // Отображаем окно действий над отчетом
    CGRect r = CGRectMake(50, 50, 0, 0);
    [contr showInPopover:[contr reportActionsController] fromView:[self view] inRect:r permittedArrowDirections: UIPopoverArrowDirectionLeft];
    // Запускаем таймер на три секунды
    [NSTimer scheduledTimerWithTimeInterval:3.0f target:self selector:@selector(timerEvent) userInfo:nil repeats:NO];
}
// Обрабатываем событие таймера
-(void) timerEvent {
    // Получаем контроллер представления отчета
    MAExpressAnalysisReportViewController *contr = (MAExpressAnalysisReportViewController*)m_controller;
    // Скрываем окно действий над отчетом
    if([contr isPopoverShown])
        [contr hidePopover];
}

Также необходимо заменить код в файле статичного примера MAExpressAnalysisReportViewController.mm в методе initWithDelegate:  на следующий код:

// Инициализируем базовый класс контроллера
if ((self = [super initWithDelegate: delegate])) {
    NSAssert(self.delegate, @"ReportDelegate not nil");
    // Создаем контроллер панели измерений
    m_panelViewController = [PanelViewController new];
    [m_panelViewController setPanelTitle:NSLocalizedString(@"Layout", @"DimPanel:Title")];
    // Создаем контроллер компоновки экрана отчета со сдвигающейся панелью измерений
    m_splitViewController = [SplitViewController new];
    m_splitViewController.panelViewController = m_panelViewController;
    NNotificationCenterExt::addObserver(self, @selector(updateSplitViewTitle), kSetTimeLineCurrentIndex, nil);
}
return self;

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

Через три секунды после отображения панели всплывающее окно будет скрыто.

Также в консоль среды разработки будет выведена информация об отчете:

Описание скриншота содержимого отчета: <UIImage: 0x12db2110>

Заголовок отчета: GDP per capita, PPP (constant 2005 international $)

Размер PDF-файла с отчётом: 76268 байт

См. также:

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