Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описывается создание закладки, добавление её в список закладок регламентного отчёта, а также демонстрируется работа с таблицей и её ячейками, содержащими наименования закладок.
Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Отображение регламентного отчёта») следующий код:
// Получаем контроллер для работы с регламентным отчётом MAProceduralReportDataViewController<MADataViewControllerProtocol> *contr = (MAProceduralReportDataViewController<MADataViewControllerProtocol> *)[(MAProceduralReportViewController *)m_controller activeDataViewController]; // Создаём закладку Bookmark *bookmark = [[Bookmark new] autorelease]; // Определяем наименование закладки и её расположение [bookmark initWithName:@"Закладка 1" offset:CGPointMake(150, 200)]; // Привязываем закладку к последней странице [bookmark setPage: [contr pagesCount] - 1]; // Определяем новое расположение закладки с учётом заданной страницы CGPoint offset; offset.x = [bookmark offset].x; float pageOffset = [bookmark page]*[contr pdfView].scrollView.contentSize.height / [contr pagesCount]; offset.y = ([bookmark offset].y + pageOffset)* [contr pdfView].scrollView.zoomScale; [bookmark setOffset:offset]; // Добавляем к наименованию закладки текущее время NSDateFormatter *dateFormat = [[NSDateFormatter new] autorelease]; [dateFormat setDateFormat:@"HH:mm:ss"]; [bookmark setName:[NSString stringWithFormat:@"%@ %@", [bookmark name], [dateFormat stringFromDate: [NSDate date]]]]; // Создаём коллекцию закладок NSMutableArray *bookmarks = [[NSMutableArray new] autorelease]; [bookmarks addObject:bookmark]; // Устанавливаем новую коллекцию закладок [(MAProceduralReportDataViewController*)contr setValue:bookmarks forKeyPath:@"currentDocument.bookmarks"]; // Переходим к созданной закладке [(MAProceduralReportDataViewController*)contr openBookmark:0]; // Создаём контроллер для выбора закладок BookmarksViewController *bookmarksViewCtrl = [[BookmarksViewController alloc] initWithStyle:UITableViewStylePlain]; // Устанавливаем делегат для просмотра отчётов [bookmarksViewCtrl setDelegate:contr]; // Устанавливаем размер окна для выбора закладок [bookmarksViewCtrl setContentSizeForViewInPopover: CGSizeMake(250, 300)]; // Получаем представление данных в виде таблицы с закладками UITableView *tableView = [bookmarksViewCtrl tableView]; // Определяем путь к ячейке с закладкой NSIndexPath *indexPath1 = [NSIndexPath indexPathForRow:0 inSection:0]; // Получаем ячейку с закладкой BookmarkTableViewCell *cell1 = (BookmarkTableViewCell*)[bookmarksViewCtrl tableView:tableView cellForRowAtIndexPath:indexPath1]; // Получаем текстовое поле в ячейке UITextField *textField1 = (UITextField *)[cell1 valueForKey:@"textField"]; NSLog(@"Наименование закладки: %@", textField1.text); // Меняем наименование закладки [[cell1 delegate] bookmarkCell:cell1 changeTitle:@"Закладка 2"]; // Повторно получаем ячейку с закладкой и соответствующее текстовое поле BookmarkTableViewCell *cell2 = (BookmarkTableViewCell*)[bookmarksViewCtrl tableView:tableView cellForRowAtIndexPath:indexPath1]; UITextField *textField2 = (UITextField *)[cell2 valueForKey:@"textField"]; NSLog(@"Наименование закладки: %@", textField2.text); // Отредактируем текст в поле ячейки, соответветствующей закладке [cell2 setTitle:@"Закладка 3"]; UITextField *textField3 = (UITextField *)[cell2 valueForKey:@"textField"]; NSLog(@"Наименование закладки: %@", textField3.text); // Запрещаем редактирование текста закладки [cell2 setEditingStyle:NO]; // Отображаем таблицу с закладками в всплывающем окне UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:bookmarksViewCtrl]; [popoverController presentPopoverFromRect:CGRectMake(bookmark.offset.x + 50, bookmark.offset.y + 50, 20, 30) inView:[contr pdfView].scrollView permittedArrowDirections:NULL animated:YES];
В результате выполнения примера была создана закладка для последней страницы документа регламентного отчёта. Также было отображено всплывающего окно, содержащее таблицу с закладками:

Название закладки было дважды изменено, о чём свидетельствует сообщения, выведенные в консоль среды разработки:
Наименование закладки: Закладка 1 09:34:06
Наименование закладки: Закладка 2
Наименование закладки: Закладка 3
Причём в первый раз было изменено название самой закладки, а во второй
раз - текст ячейки, соответствующей данной закладке. Если мы разрешим
редактирование закладки, то есть будем вызывать метод setEditingStyle
c параметром YES, то последнее
изменение будет игнорировано:

См. также: