Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описывается создание заметки в регламентном отчёте и её отображение в диалоге редактирования.
Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Отображение регламентного отчёта») следующий код:
MAProceduralReportDataViewController<MADataViewControllerProtocol> *contr = (MAProceduralReportDataViewController<MADataViewControllerProtocol> *)[(MAProceduralReportViewController *)m_controller activeDataViewController]; // Создаём новую заметку Note *note = [Note new]; [note initWithText:@"Новая" offset:CGPointMake(10, 20)]; [note setText:[NSString stringWithFormat:@"%@ заметка", [note text]]]; [note setOffset: CGPointMake([note offset].x * 10, [note offset].y * 10)]; [note setPage:[contr pagesCount] - 1]; // В качестве текущего указываем время 12:33:05 NSDateComponents *comps = [NSDateComponents new]; [comps setHour:12]; [comps setMinute:33]; [comps setSecond:5]; NSCalendar *gregorian = [NSCalendar currentCalendar]; NSDate *date = [gregorian dateFromComponents:comps]; // Устанавливаем время последнего изменения заметки [note setTimestamp:[date timeIntervalSince1970]]; // Определяем диалог для создания и редактирования заметки AddNoteDialog *noteDialog = [[AddNoteDialog alloc] init]; [noteDialog setDelegate:contr]; // Делегат [noteDialog setPoint:[note offset]]; // Расположение заметки [noteDialog setTimestamp:[note timestamp]]; // Время создания заметки [noteDialog setText:[note text]]; // Текст заметки [noteDialog setMode: kNoteDialogNewNote]; // Редактируем заметку [noteDialog setNoteIndex:1]; // Индекс заметки в массиве всех заметок // Обновляем диалог [noteDialog refresh]; // Устанавливаем размер содержимого в всплывающем окне [noteDialog setContentSizeForViewInPopover:CGSizeMake(300.0, 200.0)]; // Создаём всплывающее окно UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:noteDialog] autorelease]; UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:navController]; popoverController.delegate = contr; // Изменяем текущую страницу регламентного отчёта [contr jumpToPage:[note page]]; // Определяем содержимое всплывающего окна CGPoint offset; // Определяем отступы всплывающего окна offset.x = note.offset.x * [contr pdfView].scrollView.zoomScale; float pageOffset = [note page]*[contr pdfView].scrollView.contentSize.height / [contr pagesCount]; offset.y = (note.offset.y + pageOffset)* [contr pdfView].scrollView.zoomScale; // Отображаем всплывающее окно [popoverController presentPopoverFromRect:CGRectMake(offset.x, offset.y, 1, 1) inView:[contr pdfView].scrollView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
В результате выполнения примера на последней странице регламентного отчёта была создана и отображена заметка. Она расположена в точке с координатами (100, 200), имеет время изменения 12:33:05 и содержит текст «Новая заметка»:

Теперь сбросим текст и время последнего редактирования заметки, добавив к примеру следующую строку кода:
[noteDialog reset];
После выполнения примера диалог редактирования заметки больше не содержит текст, а время её последнего редактирования заменено на текущее:

См. также: