Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере создаётся и отображается контейнер панели измерений. После запуска примера выполняются следующие операции:
устанавливается и возвращается заголовок контейнера панели измерений;
устанавливается делегат для работы с контейнером панели измерений;
отображается верхняя и нижняя стрелка на разделителе двух представлений данных.
В базовый пример «Отображение экспресс-отчёта» необходимо добавить следующий файл:
PanelViewDelegateImpl.h/.m. Делегат для работы с контейнером панели измерений.
Для выполнения примера необходимо создать класс, реализующий протокол для работы с контейнером панели измерений, а также добавить заголовочный файл класса в исходный код класса 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
Контейнер панели измерений отображён
См. также: