Работа с представлением данных в виде диаграммы

Требования к операционной системе: 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

См. также:

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