Описание: класс, реализующий протокол делегата экспресс-отчета.
#import <Foundation/Foundation.h> #import "MAReportDelegate.h" // Класс, реализующий протокол MAReportDelegate @interface MAReportDelegateImpl : NSObject<MAReportDelegate> // Первоначальные настройки отчета @property (nonatomic, readonly) NSDictionary *reportSettings; // Сохраненные настройки отчета @property (nonatomic, retain) NSData *reportState; // Данные скриншота @property (nonatomic, assign) NSData *screenshot; // Проверка наличия сохраненного скриншота отчета @property (nonatomic, readonly) BOOL hasScreenshot; // Права доступа к экспресс-отчёту @property (nonatomic, readonly) MAReportAccessRights *accessRights; // Сохраняет текущее состояние отчета - (void) saveReport; // Сохраняет отчет в избранное - (void) saveFavoriteWithName: (NSString *)name; @end
#import "MAReportDelegateImpl.h"
#import "MADataViewController.h"
@implementation MAReportDelegateImpl
// Сохраняет текущее состояние отчета
- (void) saveReport
{
// Выводим сообщение о вызове метода saveReport
NSLog(@"Вызов действий по сохранению текущего состояния отчета");
}
// Сохраняет отчет в избранное
- (void) saveFavoriteWithName: (NSString *)name
{
// Выводим сообщение о вызове метода saveFavoriteWithName
NSLog(@"Вызов действий по сохранению отчета в избранное");
}
// Инициализирует экземпляр класса с помощью данных контроллеров представлений экспресс-отчета
-(id) initWithDataViewControllers: (NSArray *)controllers andMode: (int)mode
{
if ((self = [super init]))
{
// Создаем справочник для хранения настроек отчета
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
// Задаем в справочнике номер активного представления экспресс-отчета
[dict setObject:[NSNumber numberWithInt: mode] forKey:@"mode"];
// Создаем справочник для хранения признаков видимости заголовков представлений экспресс-отчета
NSMutableDictionary *titleVisible = [NSMutableDictionary dictionary];
// Перебираем в цикле представления экспресс-отчета
for (MADataViewController *controller in controllers) {
// Сохраняем в справочнике признак видимости заголовка для текущего представления экспресс-отчета
[titleVisible setObject:[NSNumber numberWithBool:controller.isDataViewTitleVisible] forKey:[NSNumber numberWithInt:controller.tag]];
}
// Сохраняем справочник признаков видимости заголовков в справочнике настроек отчета
[dict setObject:titleVisible forKey:@"titleVisible"];
// Сохраняем сформированный справочник настроек в свойстве reportState
_reportState = [NSKeyedArchiver archivedDataWithRootObject:dict];
// Получаем путь к файлу
NSString *path = [[NSBundle mainBundle] pathForResource:@"SplittedListReportCell-procedural" ofType:@"png"];
// Получаем двоичные данные файла
NSData *nsData = [NSData dataWithContentsOfFile: path];
// Задаем двоичные данные скриншота
_screenshot = nsData;
// Устанавливаем первоначальное значения признака наличия скриншота
_hasScreenshot = YES;
}
return self;
}
@end
См. также: