Работа с контроллером для просмотра листа из набора листов в регламентном отчёте

Требования к операционной системе: 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

См. также:

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