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

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

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

Описание

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

Необходимые файлы

В базовый пример «Отображение регламентного отчёта» необходимо добавить следующий файл:

Исходный код

Для выполнения примера необходимо создать класс делегата просмотрщика отчетов, в котором реализованы методы и свойства протоколов <ProceduralDelegate> и <PopoverContainedControllerProtocol>, добавить заголовочный файл класса в исходный код  класса ViewController (см. раздел «Отображение регламентного отчёта»), а также разместить в теле метода 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;
        // Выводим в консоль среды разработки количество заметок в регламентном отчете
        NSLog(@"Количество заметок в регламентном отчете: %d", [dataViewController notesCount]);
        // Задаем время создания заметки,в качестве текущего указываем время 12:00:00
        NSDateComponents *components = [NSDateComponents new];
        [components setHour:12];
        [components setMinute:0];
        [components setSecond:0];
        NSCalendar *calendar = [NSCalendar currentCalendar];
        NSDate *date = [calendar dateFromComponents:components];
        // Задаем точку, в которой будет создана заметка
        CGPoint point = CGPointMake(50, 100);
        // Добавляем заметку в регламентный отчет
        [dataViewController addNote:point withText:@"Заметка" timestamp:[date timeIntervalSince1970]];
        // Выводим в консоль среды разработки количество заметок в регламентном отчете после добавления заметки
        NSLog(@"Количество заметок после добавления заметки: %d", [dataViewController notesCount]);
        // Создаем делегат просмотрщика отчетов
        ProceduralDelegateImpl *proceduralDelegateImpl = [[ProceduralDelegateImpl alloc] initWithProceduralReportDataViewController:dataViewController];
        // Открываем заметку с указанным индексом
        [proceduralDelegateImpl openNoteAtIndex:0];
        // Вызываем после паузы метод, продолжающий выполнение примера
        [self performSelector:@selector(continueExample:) withObject:proceduralDelegateImpl afterDelay:5];
    }
}

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

// Продолжает выполнение примера
- (void) continueExample:(ProceduralDelegateImpl *)proceduralDelegateImpl
{
    // Получаем заметку по указанному индексу
    Note *note = [proceduralDelegateImpl.dataViewController noteByIndex:0];
    // Скрываем заметку
    [proceduralDelegateImpl cancelNote];
    // Изменяем заметку
    [proceduralDelegateImpl.dataViewController editNoteAtIndex:0 point:CGPointMake(150, 100) text:@"Отредактированная заметка" timestamp:[note timestamp]];
    // Открываем измененную заметку
    [proceduralDelegateImpl openNoteAtIndex:0];
    // Удаляем заметку после паузы
    [self performSelector:@selector(deleteNote:) withObject:proceduralDelegateImpl afterDelay:5];
}
// Удаляет заметку - (void) deleteNote:(ProceduralDelegateImpl *)proceduralDelegateImpl {     // Скрываем заметку     [proceduralDelegateImpl cancelNote];     // Удаляем заметку по указанному индексу     [proceduralDelegateImpl.dataViewController removeNoteWithIndex:0];     // Выводим в консоль среды разработки количество заметок в регламентном отчете после удаления заметки     NSLog(@"Количество заметок после удаления заметки: %d", [proceduralDelegateImpl.dataViewController notesCount]); }

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

Через 5 секунд после запуска примера будет отображена отредактированная заметка, для которой установлено новое значение текста и положения на экране мобильного устройства:

Спустя еще 5 секунд отображенная заметка будет скрыта и удалена, в результате чего регламентный отчет примет свой первоначальный вид. Также в консоли среды разработки будет выведено количество заметок в регламентном отчете после добавления и удаления новой заметки:

Количество заметок в регламентном отчете: 0

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

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

См. также:

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