Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описывается работа с кнопкой добавления и удаления закладки в представлении просмотрщика регламентных отчетов. После запуска примера выполняются следующие операции:
извлекается представление просмотрщика регламентных отчетов;
извлекается количество закладок в текущем документе регламентного отчёта;
осуществляется добавление закладки с помощью метода MAProceduralReportDataViewControllerBase.toggleBookmark;
осуществляется удаление закладки с помощью метода ProceduralDelegate.removeBookmarkWithIndex:;
осуществляется добавление закладки с помощью метода ProceduralDelegate.addBookmark;
осуществляется удаление закладки с помощью метода MAProceduralReportDataViewControllerBase.toggleBookmark;
извлекается объект кнопки добавления и удаления закладки из представления просмотрщика регламентных отчетов;
из представления просмотрщика листов извлекается указанный объект закладки;
полученная закладка открывается.
Кнопка добавления и удаления закладки для страницы регламентного отчёта имеет следующий вид:

Для выполнения примера необходимо разместить в теле метода 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-ей странице.
См. также: