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

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

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

Описание

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

Кнопка добавления и удаления закладки для страницы регламентного отчёта имеет следующий вид:

Исходный код

Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Отображение регламентного отчёта») следующий код:

// Получаем представление регламентного отчета
MAProceduralReportViewController *proceduralReportController = (MAProceduralReportViewController *)m_controller;
// Получаем массив представлений в регламентном отчете
NSArray *dataViewControllers = [proceduralReportController dataViewControllers];
// Перебираем в цикле представления регламентного отчета
for( UIViewController *controller in dataViewControllers)
{
    // Проверяем, является ли текущее представление просмотрщиком листов регламентного отчета
    if([controller isMemberOfClass:[MAProceduralReportDataViewController class]])
    {
        // Получаем представление просмотрщика листов
        MAProceduralReportDataViewController *dataViewController =(MAProceduralReportDataViewController *)controller;
        // Получаем представление просмотрщика регламентных отчетов
        MAProceduralReportDataViewControllerBase *reportDataViewControllerBase = (MAProceduralReportDataViewControllerBase *)dataViewController;
        // Выводим в консоль среды разработки количество закладок в текущем документе
        NSLog(@"Количество закладок в текущем документе: %d", [dataViewController bookmarksCount]);
        // Добавляем закладку
        [reportDataViewControllerBase toggleBookmark];
        // Выводим в консоль среды разработки количество закладок в текущем документе после добавления закладки
        NSLog(@"Количество закладок в текущем документе после добавления закладки: %d", [dataViewController bookmarksCount]);
        // Удаляем закладку по заданному индексу
        [dataViewController removeBookmarkWithIndex:0];
        // Выводим в консоль среды разработки количество закладок в текущем документе после удаления закладки
        NSLog(@"Количество закладок в текущем документе после удаления закладки: %d", [dataViewController bookmarksCount]);
        // Переходим к странице с заданным индексом
        [dataViewController jumpToPage: 3];
        // Добавляем текущую страницу в закладки
        [dataViewController addBookmark];
        // Возвращаемся к первой странице документа
        [dataViewController jumpToPage: 0];
        // Получаем кнопку добавления и удаления закладки для страницы регламентного отчёта
        UIBarButtonItem *bookmarkButtonItem = [reportDataViewControllerBase bookmarkButtonItem];
        // Устанавливаем объект, который будет выполнять действие при нажатии кнопки
        [bookmarkButtonItem setTarget:self];
        // Назначаем метод, который будет выполняться при нажатии кнопки
        [bookmarkButtonItem setAction:@selector(barButtonAction)];
    }
}

Также необходимо в классе ViewController добавить следующий метод вместе с его реализацией:

// Выполняет действие при нажатии кнопки
- (void) barButtonAction
{
    // Получаем представление регламентного отчета
    MAProceduralReportViewController *proceduralReportController = (MAProceduralReportViewController *)m_controller;
    // Получаем массив представлений в регламентном отчете
    NSArray *dataViewControllers = [proceduralReportController dataViewControllers];
    // Перебираем в цикле представления регламентного отчета
    for( UIViewController *controller in dataViewControllers)
    {
        // Проверяем, является ли текущее представление просмотрщиком листов регламентного отчета
        if([controller isMemberOfClass:[MAProceduralReportDataViewController class]])
        {
            // Получаем представление просмотрщика листов
            MAProceduralReportDataViewController *dataViewController =(MAProceduralReportDataViewController *)controller;
            // Перебираем в цикле все закладки текущего документа в регламентном отчете
            for(int i = 0; i < [dataViewController bookmarksCount]; i++)
            {
                // Получаем закладку
                Bookmark *bookmark = [dataViewController bookmarkAtIndex:i];
                // Проверяем номер страницы закладки
                if([bookmark page] == 3)
                {
                    // Открываем закладку
                    [dataViewController openBookmark:i];
                    break;
                }
            }
        }
    }
}

В результате выполнения примера в консоли среды разработки будет выведен результат добавления и удаления закладки в текущем документе регламентного отчета:

Количество закладок в текущем документе: 0

Количество закладок в текущем документе после добавления закладки: 1

Количество закладок в текущем документе после удаления закладки: 0

 

Аналогичный результат можно получить, если заменить в методе executeExample строки:

// Удаляем закладку по заданному индексу
[dataViewController removeBookmarkWithIndex:0];

на следующий код:

// Удаляем закладку
[reportDataViewControllerBase toggleBookmark];

Далее нажмём на кнопку добавления и удаления закладки для страницы регламентного отчёта . В результате этого действия на экране мобильного устройства будет отображен регламентный отчёт, в котором открыта закладка на 3-ей странице.

См. также:

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