Operating system requirements: iOS 5.0 or later.
Mobile device: iPad.
This example describes working with a button for adding and removing a bookmark in regular report viewer view. After starting the example the following operations are executed:
Regular report viewer view is retrieved.
Number of bookmarks in the current regular report document is retrieved.
A bookmark is added by means of the MAProceduralReportDataViewControllerBase.toggleBookmark method.
A bookmark is removed by means of the ProceduralDelegate.removeBookmarkWithIndex: method.
A bookmark is added by means of the ProceduralDelegate.addBookmark method.
A bookmark is removed by means of the MAProceduralReportDataViewControllerBase.toggleBookmark method.
An object of a button for adding and removing a bookmark from regular report viewer view is retrieved.
The specified bookmark object is retrieved from sheet viewer view.
The obtained bookmark is opened.
The button for adding and removing a regular report page bookmark looks as follows:
Executing the example requires to place the following code in the body of the executeExample method of the ViewController class (see the Displaying of Regular Report section):
// Get regular report view MAProceduralReportViewController *proceduralReportController = (MAProceduralReportViewController *)m_controller; // Get regular report view array NSArray *dataViewControllers = [proceduralReportController dataViewControllers]; // Parse regular report views in cycle for( UIViewController *controller in dataViewControllers) { // Check if the current view is a regular report sheet viewer if([controller isMemberOfClass:[MAProceduralReportDataViewController class]]) { // Get sheet viewer view MAProceduralReportDataViewController *dataViewController =(MAProceduralReportDataViewController *)controller; // Get regular report viewer view MAProceduralReportDataViewControllerBase *reportDataViewControllerBase = (MAProceduralReportDataViewControllerBase *)dataViewController; // Display number of current document bookmarks in the development environment console NSLog(@"Number of current document bookmarks: %d", [dataViewController bookmarksCount]); // Add bookmark [reportDataViewControllerBase toggleBookmark]; // Display number of current document bookmarks after adding a bookmark in the development environment console NSLog(@"Number of bookmarks in current document after adding a bookmark: %d", [dataViewController bookmarksCount]); // Remove bookmark by specified index [dataViewController removeBookmarkWithIndex:0]; // Display number of current document bookmarks after removing a bookmark in the development environment console NSLog(@"Number of current document bookmarks after removing a bookmark: %d", [dataViewController bookmarksCount]); // Go to page with specified index [dataViewController jumpToPage: 3]; // Add the current page to bookmarks [dataViewController addBookmark]; // Return to first document page [dataViewController jumpToPage: 0]; // Get button for adding and removing bookmark on regular report page UIBarButtonItem *bookmarkButtonItem = [reportDataViewControllerBase bookmarkButtonItem]; // Set object that executes operation on the button click [bookmarkButtonItem setTarget:self]; // Assign method that is executed on the button click [bookmarkButtonItem setAction:@selector(barButtonAction)]; } }
It is also required to add the following method with its implementation in the ViewController class:
// Executes operation on the button click - (void) barButtonAction { // Get regular report view MAProceduralReportViewController *proceduralReportController = (MAProceduralReportViewController *)m_controller; // Get array of regular report views NSArray *dataViewControllers = [proceduralReportController dataViewControllers]; // Parse regular report views in cycle for( UIViewController *controller in dataViewControllers) { // Check if the current view is a regular report sheet viewer view if([controller isMemberOfClass:[MAProceduralReportDataViewController class]]) { // Get sheet viewer view MAProceduralReportDataViewController *dataViewController =(MAProceduralReportDataViewController *)controller; // Parse all current document bookmarks of regular report in cycle for(int i = 0; i < [dataViewController bookmarksCount]; i++) { // Get bookmark Bookmark *bookmark = [dataViewController bookmarkAtIndex:i]; // Check bookmark page number if([bookmark page] == 3) { // Open bookmark [dataViewController openBookmark:i]; break; } } } } }
After executing the example the development environment console displays result of adding and removing the bookmark in the current document of regular report:
Number of bookmarks in the current document: 0
Number of bookmarks in the current document after adding a bookmark: 1
Number of bookmarks in the current document after removing a bookmark: 0
Identical result can be obtained if replace the strings in the executeExample method:
// Remove bookmark by specified index [dataViewController removeBookmarkWithIndex:0];
with the following code:
// Remove bookmark [reportDataViewControllerBase toggleBookmark];
Then press the button for adding and removing a bookmark of regular report page . As a result, the mobile device screen displays the regular report with the bookmark opened on the third page.
See also: