Работа с контейнером панели измерений (пример 1)

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

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

Описание

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

Необходимые файлы

В базовый пример «Отображение экспресс-отчёта» необходимо добавить следующий файл:

Исходный код

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

-(void)executeExample {
    // Создаём контроллер для работы с контейнером панели измерений
    PanelViewController *panelViewCtrl = [PanelViewController new];
    
    // Устанавливаем заголовок контейнера
    [panelViewCtrl setPanelTitle: @"Prognoz"];
    NSLog(@"Заголовок контейнера панели измерений: %@", [PanelViewController text]);
    
    // Создаём контроллер панели измерений
    MADimensionsPanelTableViewController *tableViewCtrl = [self createDimensionsPanelTableViewController];
    // Устанавливаем контроллер панели измерений
    [panelViewCtrl setContentViewController: tableViewCtrl];
        
    // Создаём и устанавливаем делегат для работы панелью измерений
    PanelViewDelegateImpl *delegate = [PanelViewDelegateImpl new];
    [panelViewCtrl setDelegate: delegate];
    
    // Получаем разделитель двух представлений данных
    MASeparatorView *separatorView = [panelViewCtrl separatorView];
    // Сообщаем о том, что контейнер панели измерений отображён
    [panelViewCtrl updateForVisibility: NO];
    
    // Отображаем верхнюю стрелку на разделителе двух представлений
    [separatorView setUpArrowVisible: YES];
    // Отображаем нижнюю стрелку на разделителе двух представлений
    [separatorView setDownArrowVisible: YES];
    // Отображает контроллер для работы с контейнером панели измерений
    [self showViewControllerInNavigationController: panelViewCtrl];
}
// Создаёт контроллер панели измерений
-(MADimensionsPanelTableViewController *) createDimensionsPanelTableViewController {
    // Получаем контроллер для работы с экспресс-отчётом
    MAExpressAnalysisReportViewController *contr = (MAExpressAnalysisReportViewController *)m_controller;
    // Получаем делегат для работы с экспресс-отчётом
    EAReportDelegateImpl *delegate = [contr delegate];
    
    // Получаем объект, представляющий собой основу для построения таблиц с данными
    SPPLPivot pivot = PPLPivot::pivot([delegate olapReport]);
    
    // Создаём делегат панели измерений
    MADimensionsPanelTableViewDelegate *panelDelegate = [[MADimensionsPanelTableViewDelegate alloc] initWithPivot: pivot];
    
    // Создаём источник данных панели измерений
    MADimensionsPanelTableViewDataSource *panelDataSource = [[MADimensionsPanelTableViewDataSource alloc] initWithPivot: [panelDelegate pivot]];
    
    // Создаём контроллер для работы с панелью измерений
    MADimensionsPanelTableViewController *tableViewCtrl = [MADimensionsPanelTableViewController new];
    [tableViewCtrl setPanelDataSource: panelDataSource];
    [tableViewCtrl setPanelDelegate: panelDelegate];
    return tableViewCtrl;
}

В результате выполнения примера на экране мобильного устройства будет отображён контейнер панели измерений. Он состоит из заголовка, панели измерений и разделителя. На разделителе представлений данных будут отображены верхняя и нижняя стрелки:

Результат выполнения примера останется тем же, если строчку кода:

[panelViewCtrl updateForVisibility: NO];

заменить на следующий фрагмент:

[separatorView setPanelVisible: YES];
if ([separatorView isPanelVisible] && [delegate respondsToSelector:@selector(panelViewDidHide:)]) {
    [delegate panelViewDidShow: panelViewCtrl];
}
if (![separatorView isPanelVisible] && [delegate respondsToSelector:@selector(panelViewDidShow:)]) {
    [delegate panelViewDidHide: panelViewCtrl];
}

В консоли среды разработки были выведены заголовок контейнера панели измерений и уведомление о том, что данный контейнер отображён:

Заголовок контейнера панели измерений: Prognoz

Контейнер панели измерений отображён

См. также:

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