Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описываются некоторые приемы работы с представлением данных в виде диаграммы. После запуска примера выполняются следующие операции:
создается контроллер представления данных в виде диаграммы;
устанавливается новый тип диаграммы;
устанавливается признак того, будет ли уменьшен размер шрифта подписей диаграммы;
извлекается источник данных диаграммы;
извлекается признак доступности масштабирования диаграммы;
извлекается признак, определяющий, будут ли скрываться элементы диаграммы, не помещающиеся в ней;
извлекается значение коэффициента соотношения размера области диаграммы к размерам ее элементов, при котором следует скрывать элементы;
извлекается наименование файла с настройками диаграммы.
Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Отображение экспресс-отчёта») следующий код:
// Получаем массив контроллеров представлений данных
NSArray *controllers =[m_controller dataViewControllers];
// Перебираем в цикле контроллеры представлений данных
for(NSObject *controller in controllers) {
// Проверяем, является ли текущий контроллер контроллером представления данных в виде диаграммы
if([controller isMemberOfClass:[MAChartDataViewController class]]) {
// Получаем объект контроллера представления данных в виде диаграммы
MAChartDataViewController *chartController = (MAChartDataViewController *)controller;
// Отображаем представление данных в виде диаграммы
[self showViewControllerInNavigationController: chartController];
// Устанавливаем новый тип диаграммы
[chartController setChartType: kAreaAbsolute];
// Указывает, что диаграмма отображается не во весь экран мобильного устройства
[chartController setIsFullScreen:NO];
// Загружаем представление данных в виде диаграммы
[chartController loadView];
// Получаем источник данных диаграммы
ChartDataSourceImpl *chartDatasource = [chartController dataSource];
// Получаем наименование ряда данных диаграммы для заданного индекса
NSString *seriesName = [chartDatasource seriesNameWithIndex: 1];
// Получаем признак доступности масштабирования диаграммы
BOOL zoomEnabled = [chartController zoomEnabled];
// Получаем признак, определяющий, будут ли скрываться элементы диаграммы, не помещающиеся в ней
BOOL optimizeOn = [chartController optimizeOn];
/* Получаем значение коэффициента соотношения размера области диаграммы
к размерам ее элементов, при котором следует скрывать элементы */
BOOL contentOptimizationFactor = [chartController contentOptimizationFactor];
// Получаем наименование файла с настройками диаграммы
NSString *settingsPlistName = [chartController settingsPlistName];
// выводим в консоль среды информацию о контроллере представления данных в виде диаграммы
NSLog(@"Наименование ряда диаграммы для индекса 1 в источнике данных: %@", seriesName);
NSString *zoomEnabledMess = zoomEnabled? @"доступно": @"недоступно";
NSLog(@"Признак доступности масштабирования диаграммы: %@", zoomEnabledMess);
NSString *optimizeOnMess = optimizeOn? @"элементы будут скрываться": @"элементы не будут скрываться";
NSLog(@"Признак, определяющий, будут ли скрываться элементы диаграммы, не помещающиеся в ней: %@", optimizeOnMess);
NSString *contentOptimizationFactorMess = contentOptimizationFactor? @"1": @"0";
NSLog(@"Значение коэффициента соотношения размера области диаграммы к размерам ее элементов, при котором следует скрывать элементы: %@",contentOptimizationFactorMess);
NSLog(@"Наименование файла с настройками диаграммы: %@", settingsPlistName);
}
}
Также необходимо заменить код в файле статичного примера MAExpressAnalysisReportViewControllerFactory.mm в методе createReport: в блоке:
if (delegate.isChartEnabled)
на следующий код:
// Создаем контроллер представления данных в виде диаграммы MAChartDataViewController *controller = [[MAChartDataViewController alloc] initWithDatasource:(ChartDataViewDatasource *)delegate.chartDatasource]; // Устанавливаем видимость заголовка controller.isDataViewTitleVisible = !!delegate.olapReport->title(); // Устанавливаем делегат контроллера controller.delegate = report; // Устанавливаем тег контроллера controller.tag = kViewModeChart; // Устанавливаем значение коэффициента соотношения размера области диаграммы к размерам ее элементов, при котором следует скрывать элементы controller.contentOptimizationFactor = 0; // Устанавливаем наименование файла с настройками controller.settingsPlistName = (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? @"settings_ea_ipad.plist" : @"settings_ea_iphone.plist"); // Устанавливаем для контроллера объект, содержащий настройки диаграммы if (olapReport->chartSettings()) controller.settingsFromReports = (NSDictionary*)olapReport->chartSettings()->nsObject(); // Добавляем контроллер в массив контроллеров [controllers addObject:controller]; // Добавляем контроллер в пул объектов, для которых производится автоматический подсчет ссылок [controller autorelease];
В результате выполнения примера был отображен экспресс-отчет, содержащий диаграмму, для которой было установлено новое значение типа отображения, а также изменен размер шрифта подписей:

В консоли среды разработки будет выведена информация о свойствах диаграммы, наименование файла, содержащего её настройки, а также наименование одного из ряда данных диаграммы:
Наименование ряда диаграммы для индекса 1 в источнике данных: Россия
Признак доступности масштабирования диаграммы: доступно
Признак, определяющий, будут ли скрываться элементы диаграммы, не помещающиеся в ней: элементы не будут скрываться
Значение коэффициента соотношения размера области диаграммы к размерам ее элементов, при котором следует скрывать элементы: 0
Наименование файла с настройками диаграммы: settings_ea_ipad.plist
См. также: