Обработка событий источника данных диаграммы

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

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

Описание

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

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

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

Исходный код

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

// Получаем массив контроллеров представлений данных
NSArray *controllers =[m_controller dataViewControllers];
// Перебираем в цикле контроллеры представлений данных
for(NSObject *controller in controllers)
{
    // Проверяем, является ли текущий контроллер контроллером представления данных в виде диаграммы
    if([controller isMemberOfClass:[MAChartDataViewController class]])
    {
        // Получаем объект контроллера представления данных в виде диаграммы
        MAChartDataViewController *chartController = (MAChartDataViewController *)controller;
        // Получаем источник данных диаграммы
        ChartDataViewDatasource *chart = [[chartController dataSource] datasource];
        // Получаем текстовое описание выборки данных
        NSString *chartDataSelectionTitle = [chart dataSelectionTitle];
        // Получаем текстовое описание выборки данных для указанного времени
        NSString *chartDataSelectionTitleWithTimeIndex = [chart dataSelectionTitleWithTimeaxisIndex:1];
        // Выводим в консоль среды разработки полученную информацию
        NSLog(@"Описание выборки данных: %@", chartDataSelectionTitle);
        NSLog(@"Описание выборки данных, соответствующее положению оси времени с индексом 1: %@", chartDataSelectionTitleWithTimeIndex);
        // Удаляем всех подписчиков источника данных диаграммы
        [chart removeEventObservers];
        // Создаем объект-наблюдатель событий источника данных диаграммы
        DataViewDatasourceExample *exampleDelegate = [[DataViewDatasourceExample alloc] initWithName: @"chartDatasource"];
        // Подписываем объект-наблюдатель на события источника данных
        [chart addEventObserver:exampleDelegate];
        // Вызываем событие обновления данных
        [chart pivotTableUpdated];
        // Вызываем пользовательское событие
        [chart sendEvent:2];
        // Удаляем наблюдателя из списка наблюдателей событий источника данных диаграммы
        [chart removeEventObserver: exampleDelegate];
        // Вызываем пользовательское событие
        [chart sendEvent:2];
        break;
    }
}

В результате выполнения примера в консоли среды разработки будет выведена информация об источнике данных, а также сообщения о событиях источника данных диаграммы:

Описание выборки данных: GDP per capita, PPP (constant 2005 international $)

Описание выборки данных, соответствующее положению оси времени с индексом 1: 1

chartDatasource: Cобытие обновления данных, код события: 1

chartDatasource: Пользовательское событие, код события: 2

 

Попытка повторного вызова пользовательского события не приводит к выполнению кода объекта-наблюдателя, поскольку он был удален из списка наблюдателей событий источника данных диаграммы с помощью метода DataViewDatasource.removeEventObserver:. Аналогичный результат будет получен, если в исходном коде заменить строку:

[chart removeEventObserver: exampleDelegate];

на следующий код:

[chart removeEventObservers];

См. также:

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