Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описывается способ создания делегата экспресс-отчета. После запуска примера выполняются следующие операции:
создается объект делегата экспресс-отчета;
созданный объект устанавливается в качестве делегата контроллера представления экспресс-отчета;
извлекаются сохраненные настройки экспресс-отчета;
вызывается метод, в котором находится реализация действий по сохранению текущего состояния отчета;
извлекаются данные скриншота экспресс-отчета.
В базовый пример «Отображение экспресс-отчёта» необходимо добавить следующий файл:
MAReportDelegateImpl.h/.m. Делегат для работы с представлением данных в виде плоского дерева.
Для выполнения примера предполагается наличие файла с наименованием «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
Признак видимости заголовка представления «Таблица»: невидимый
Признак видимости заголовка представления «Диаграмма»: невидимый
Признак видимости заголовка представления «Карта»: невидимый
Вызов действий по сохранению текущего состояния отчета
Данные скриншота присутствуют
См. также: