Создание делегата экспресс-отчета

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

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

Описание

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

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

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

Исходный код

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

// Получаем массив контроллеров представлений данных
NSArray *controllers =[m_controller dataViewControllers];
// Создаем экземпляр делегата экспресс-отчета
MAReportDelegateImpl *reportDelegate = [[MAReportDelegateImpl alloc] initWithDataViewControllers: controllers andMode: 1];
// Устанавливаем делегат контроллера представления экспресс-отчета
[m_controller setDelegate:reportDelegate];
// Получаем справочник сохраненных настроек отчета
NSDictionary *stateDict = [NSKeyedUnarchiver unarchiveObjectWithData: [[m_controller delegate] reportState]];
// Выводим в консоль среды разработки номер активного представления отчета
NSLog(@"Номер активного представления: %d", [[stateDict objectForKey: @"mode"] intValue]);
// Получаем справочник для хранения признаков видимости заголовков представлений экспресс-отчета
NSDictionary *titleVisible = [stateDict objectForKey:@"titleVisible"];
// Проверяем, не является ли справочник пустым
if (titleVisible)
{
    // Перебираем в цикле контроллеры представлений отчета
    for (MADataViewController *controller in controllers)
    {
        // Получаем и выводим в консоль среды разработки признак видимости заголовка для текущего представления отчета
        BOOL visibility = [[titleVisible objectForKey:[NSNumber numberWithInt:controller.tag]] boolValue];
        NSLog(@"Признак видимости заголовка представления «%@»: %@", [controller title], visibility?@"видимый":@"невидимый");
    }
}
// Вызываем метод для сохранения текущего состояния отчета
[[m_controller delegate] saveReport];
// Выводим в консоль среды разработки сообщение о наличии данных скриншота
if([[m_controller delegate] screenshot] != nil) NSLog(@"Данные скриншота присутствуют");
else NSLog(@"Данные скриншота отсутствуют");

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

Номер активного представления: 1

Признак видимости заголовка представления «Таблица»: невидимый

Признак видимости заголовка представления «Диаграмма»: невидимый

Признак видимости заголовка представления «Карта»: невидимый

Вызов действий по сохранению текущего состояния отчета

Данные скриншота присутствуют

См. также:

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