Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описываются некоторые приемы работы с составным блоком аналитической панели. После запуска примера выполняются следующие операции:
извлекается составной блок аналитической панели;
извлекается заголовок полученного составного блока;
извлекаются координаты вложенного контроллера полученного составного блока;
извлекается индекс полученного составного блока у аналитической панели;
извлекается признак того, нужно ли показывать составной блок в режиме слайдов;
отображается и снова скрывается индикатор загрузки полученного составного блока.
Для выполнения примера предполагается наличие в отчете репозитория более одного составного блока. Далее необходимо в классе ViewController (см. раздел «Отображение аналитической панели») добавить следующие методы вместе с их реализацией:
// Выполняет действия, связанные с началом расчетов контроллера представления
-(void)calculationsStart{
// Получаем контроллер аналитической панели
MADashboardReportViewController* dashboard = (MADashboardReportViewController *)m_controller;
// Получаем аналитическую панель
APKap *report = [dashboard report];
// Получаем массив составных блоков
NSMutableDictionary *blocks = [report compositeBlocks];
if ([blocks count] > 0) {
// Получаем ключ составного блока
NSString *key = [[blocks allKeys] objectAtIndex:0];
// Получаем составной блок по заданному ключу
APCompositeBlock *block = [blocks valueForKey: key];
// Показываем индикатор загрузки
[block dataViewControllerWillStartCalculations];
} else {
NSLog(@"Составные блоки отсутствуют");
}
// Вызываем метод calculationsStop после паузы длиной 5 секунд
[self performSelector:@selector(calculationsStop) withObject:nil afterDelay:5.0f];
}
// Выполняет действия, связанные с окончанием расчетов контроллера представления
-(void)calculationsStop{
// Получаем контроллер аналитической панели
MADashboardReportViewController* dashboard = (MADashboardReportViewController *)m_controller;
// Получаем аналитическую панель
APKap *report = [dashboard report];
// Получаем массив составных блоков
NSMutableDictionary *blocks = [report compositeBlocks];
if ([blocks count] > 0) {
// Получаем ключ составного блока
NSString *key = [[blocks allKeys] objectAtIndex:0];
// Получаем составной блок по заданному ключу
APCompositeBlock *block = [blocks valueForKey: key];
// Скрываем индикатор загрузки
[block dataViewControllerDidFinishCalculations];
} else {
NSLog(@"Составные блоки отсутствуют");
}
}
Также необходимо разместить в теле метода executeExample класса ViewController следующий код:
// Получаем контроллер аналитической панели MADashboardReportViewController* dashboard = (MADashboardReportViewController *)m_controller; // Получаем аналитическую панель APKap *report = [dashboard report]; // Получаем массив составных блоков NSMutableDictionary *blocks = [report compositeBlocks]; // Получаем ключ составного блока NSString *key = [[blocks allKeys] objectAtIndex:0]; // Получаем составной блок по заданному ключу APCompositeBlock *block = [blocks valueForKey: key]; // Получаем заголовок составного блока NSString *title = [block blockTitle]; // Получаем координаты вложенного контроллера составного блока CGRect dataViewRect = [block dataViewRect]; // Получаем индекс составного блока int index = [block index]; // Получаем признак того, нужно ли показывать составной блок в режиме слайдов BOOL visibleInSlideshow =[ block isVisibleInSlideshow]; // Выводим в консоль среды разработки информацию о составном блоке NSLog(@"Заголовок составного блока: %@", title); NSLog(@"Ширина вложенного контроллера составного блока: %f", dataViewRect.size.width); NSLog(@"Индекс составного блока: %d", index); NSLog(@"Признак того, нужно ли показывать составной блок в режиме слайдов: %@", visibleInSlideshow? @"да": @"нет"); // Вызываем метод calculationsStart после паузы длиной 5 секунд [self performSelector:@selector(calculationsStart) withObject:nil afterDelay:5.0f];
В результате выполнения примера на экране мобильного устройства была отображена аналитическая панель, содержащая составные блоки:

Через 5 секунд после запуска примера для одного из составных блоков будет отображен индикатор загрузки:

Спустя еще 5 секунд отображенный индикатор загрузки будет скрыт, после чего аналитическая панель примет первоначальный вид. Также в консоль среды разработки будет выведена информация о выбранном составном блоке:
Заголовок составного блока: GDP per capita, PPP (constant 2005 international $)
Ширина вложенного контроллера составного блока: 380.000000
Количество составных блоков у аналитической панели: 0
Признак того, нужно ли показывать составной блок в режиме слайдов: да
См. также: