Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описывается работа с контроллером для просмотра листов из соответствующего набора в регламентном отчёте. После запуска примера выполняются следующие операции:
отображается лист из указанного набора листов и с заданным ключом;
определяется и устанавливается индекс активного набора листов регламентного отчета;
определяется количество листов в указанном наборе;
определяется заголовок набора листов регламентного отчета;
определяются ключ и наименование листа;
определяется полный путь к листу и расширение соответствующего ему файла;
определяется признак того, будет ли отображается лист регламентного отчета;
с помощью настроек устанавливается и определяется индекс текущего листа в регламентном отчёте.
Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Отображение регламентного отчёта») следующий код:
// Создаём регламентный отчёт
SPPLProceduralReport2 proceduralReport2 = PPLProceduralReport2::proceduralReport(m_proceduralReportDescriptor);
// Создаём контроллер для работы с регламентным отчётом
MAProceduralReport2ViewController *controller = (MAProceduralReport2ViewController *)[MAProceduralReportViewControllerFactory createReport: proceduralReport2];
// Получаем источник данных
id<MAProceduralReportViewControllerDelegateExt> dataSource = (id<MAProceduralReportViewControllerDelegateExt>)[controller delegate];
// Создаём контроллер для просмотра листов регламентного отчета из соответствующих наборов
MAProceduralReportExtDataViewController *extDataViewController = [[MAProceduralReportExtDataViewController alloc] initWithDataSource: dataSource];
// Устанавливаем индекс листа в соответствующем наборе
int workSheetIndex = 0;
// Получаем количество наборов листов
int worksheetSetsCount = [dataSource worksheetSetsCountInProceduralReportController: extDataViewController];
NSLog(@"Количество наборов листов: %d", worksheetSetsCount);
// Получаем индекс активного набора листов
NSNumber *activeWorksheetSetIndex = [NSNumber numberWithInt: [dataSource starupWorksheetSetIdInProceduralReportController: extDataViewController]];
if([activeWorksheetSetIndex intValue] < 0) {
// Устанавливаем индекс активного набора листов
[extDataViewController setWorksheetSetIndex: 0];
activeWorksheetSetIndex = [NSNumber numberWithInt: [extDataViewController worksheetSetIndex]];
// Устанавливаем ключ активного набора листов
[extDataViewController setWorksheetSetKey: [NSNumber numberWithInt: 2]];
}
NSLog(@"Индекс активного набора листов регламентного отчета: %d", [activeWorksheetSetIndex intValue]);
// Получаем количество листов в указанном наборе
int worksheetsCount = [dataSource proceduralReportController: extDataViewController worksheetsCountForWorksheetSet: activeWorksheetSetIndex];
NSLog(@"Количество листов в указанном наборе: %d", worksheetsCount);
// Получаем заголовок для набора листов
NSString *worksheetSetTitle = [dataSource proceduralReportController: extDataViewController reportTitleForWorksheetSet: activeWorksheetSetIndex];
NSLog(@"Заголовок набора листов: %@", worksheetSetTitle);
// Получаем идентификатор набора листов
NSNumber *workseetSetId = (NSNumber *)[dataSource proceduralReportController: extDataViewController worksheetSetIdAtIndex: [activeWorksheetSetIndex intValue]];
NSLog(@"Идентификатор набора листов: %d", [workseetSetId intValue]);
// Получаем наименование первого листа в указанном наборе
NSString *name = [dataSource proceduralReportController:extDataViewController
worksheetSet: activeWorksheetSetIndex workSheetNameAtIndex: workSheetIndex];
NSLog(@"Наименование листа регламентного отчета: %@", name);
// Получаем ключ листа
NInteger key = [dataSource proceduralReportController: extDataViewController worksheetSet:activeWorksheetSetIndex workSheetKeyAtIndex: workSheetIndex];
NSLog(@"Ключ листа регламентного отчета: %d", key);
// Получаем полный путь к листу
NSString *fullPath = [dataSource proceduralReportController:extDataViewController worksheetSet:activeWorksheetSetIndex worksheetFullpathAtIndex: workSheetIndex];
NSLog(@"Полный путь к листу регламентного отчета: %@", fullPath);
// Получаем расширение файла с листом регламентного отчета
NSString *ext = [dataSource proceduralReportController: extDataViewController worksheetSet: activeWorksheetSetIndex worksheetExtAtIndex: workSheetIndex];
NSLog(@"Расширение файла с листом регламентного отчета: %@", ext);
BOOL isVisible = [dataSource proceduralReportController: extDataViewController worksheetSet:activeWorksheetSetIndex isWorksheetVisibleAtIndex: workSheetIndex];
NSLog(@"Признак того, будет ли отображаться лист регламентного отчета: %d", isVisible);
// Отображаем представление контроллера
[self showViewControllerInFullScreen: extDataViewController];
// Создаём пользовательские данные
NSMutableData *data = [[NSMutableData new] autorelease];
NSKeyedArchiver *archiver = [[[NSKeyedArchiver alloc] initForWritingWithMutableData:data] autorelease];
// Устанавливаем индекс текущего листа
int currentDocumentIndex = 1;
[archiver encodeObject:[NSNumber numberWithInt: currentDocumentIndex] forKey:@"CURRENT_DOCUMENT_INDEX"];
[archiver finishEncoding];
// Сохраняем настройки
[dataSource proceduralReportController: extDataViewController setState: data];
// Получаем пользовательские настройки для регламентного отчёта
NSData *state = [dataSource stateForProceduralReportController: extDataViewController];
if (state.length > 0) {
NSKeyedUnarchiver *unarchiver = [[[NSKeyedUnarchiver alloc] initForReadingWithData:state] autorelease];
if (NSNumber *docIndex = [unarchiver decodeObjectForKey:@"CURRENT_DOCUMENT_INDEX"]) {
// Получаем индекс текущего листа
int currentDocumentIndex = [docIndex intValue];
NSLog(@"Индекс текущего листа в регламентном отчёте: %d", currentDocumentIndex);
}
}
В результате выполнения примера на экране мобильного устройства был отображён лист с индексом 0 и ключом 2 в регламентном отчёте. Информация о данном листе и наборе листов выведена в консоли среды разработки:
Индекс активного набора листов регламентного отчета: 0
Количество листов в указанном наборе: 1
Заголовок набора листов: Title
Идентификатор набора листов: 0
Наименование листа регламентного отчета: Profile
Ключ листа регламентного отчета: 1
Полный путь к листу регламентного отчета: /Users/sea/Library/Application Support/iPhone Simulator/7.1/Applications/FF74E776-7B3C-4D6B-9132-912743B93C5E/Documents/repositories/nrspo-121.prognozcloud.ru:dev8:mobile/OBJECTS/REP_COMPANY_PROFILE_MOBILE/0-1.pdf
Расширение файла с листом регламентного отчета: pdf
Признак того, будет ли отображаться лист регламентного отчета: 1
Индекс текущего листа в регламентном отчёте: 1
См. также: