I can tell you that the swipe, that the UINavigationController suppport is a swipe, when the user starts to scroll his finger to the left of the screen to the right to pull the view out of the navigation, you cannot push it away by moving it from the right to the left in the iPhone, this is used by default in UINavigationController
I am writing my code, since I use you to configure it accordingly, I did not have time to edit, I will tell you more
#pragma mark for pageView - (UIViewController *) viewControllerAtIndex:(NSUInteger)index { if (index > (self.imageArray.count-1)) return nil; UIViewController *viewController = nil; //// GalleryItems *item = self.imageArray[index]; NSString *cachedGalleryItemName = [item getCachedPhotoFileNameWithPath]; if ([[NSFileManager defaultManager] fileExistsAtPath:cachedGalleryItemName]) { ImageViewController *imageVC = [[ImageViewController alloc] initWithNibName:@"ImageViewController" bundle:nil]; imageVC.galleryItem = item; imageVC.cachedGalleryItemName = cachedGalleryItemName; imageVC.index = index; viewController = imageVC; } else { if (self.downloadViewController) { if (self.indexOfDownloadInProgress == index) viewController = self.downloadViewController; else { FileDownloader *fileDownloader = [DataDownloadManager existingFileDownloader:cachedGalleryItemName]; if (! fileDownloader) { fileDownloader = [[FileDownloader alloc] init]; [fileDownloader loadURL:item.photoURL forFilePath:cachedGalleryItemName withReceipt:nil]; fileDownloader.delegate = nil; fileDownloader.notificationName = item.contentId; fileDownloader.queuePriority = NSOperationQueuePriorityNormal; [[DataDownloadManager sharedInstance].operationQueue addOperation:fileDownloader]; } } } else { DownloadViewController *downloadVC = [[DownloadViewController alloc] initWithNibName:@"DownloadViewController" bundle:nil]; downloadVC.delegate = self; downloadVC.downloadCompleteNotificationName = item.contentId; downloadVC.asset = item; downloadVC.backgroundImageFileName = nil; downloadVC.totalFileSize = nil; downloadVC.URLString = item.photoURL; downloadVC.cachedFileName = cachedGalleryItemName; self.indexOfDownloadInProgress = index; self.downloadViewController = downloadVC; viewController = downloadVC; } } return viewController; }
Now use this function to identify the view controller
-(NSUInteger) indexOfViewController:(UIViewController *)viewController { NSUInteger index = nil; if ([viewController isMemberOfClass:[ImageViewController class]]) { ImageViewController *currentViewController = (ImageViewController *)viewController; index = currentViewController.index; } else if ([viewController isMemberOfClass:[DownloadViewController class]]) index = self.indexOfDownloadInProgress; return index; } - (UIViewController *)viewController:(UIViewController *)viewController ForBeforeAfter:(NSInteger) beforeAfter { NSUInteger index = [self indexOfViewController:viewController]; if (index == NSNotFound) return nil; index = index + beforeAfter; if ([DataDownloadManager sharedInstance].internetNotAvailable) { while (index < self.imageArray.count - 1) { GalleryItems *item = self.imageArray[index]; if ([item isDownloaded]) break; index = index + beforeAfter; } } return [self viewControllerAtIndex:index]; }
now do this in the page list controller delegate
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController { return [self viewController:viewController ForBeforeAfter:-1]; } -(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController { return [self viewController:viewController ForBeforeAfter:+1]; }
page view control
- (void)initPageViewController:(UIViewController *)initViewController { self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil]; [self.pageViewController setDataSource:self]; [self.pageViewController setViewControllers:@[initViewController] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil]; [self.pageViewController.view setFrame:self.view.frame]; [self addChildViewController:self.pageViewController]; [self.view addSubview:self.pageViewController.view]; [self.pageViewController didMoveToParentViewController:self]; [self.view sendSubviewToBack:self.pageViewController.view]; }
in viewDidLoad class (in my case it is DisplayImageViewController), you use this page, you can add this code to initialize
[self initPageViewController:[self viewControllerAtIndex:self.index]];
this DisplayImageViewController class is used to display an image that you just remove the UIIMAGE so that you need something.
and before you click this view controller in the navigation system, set a property like this
DisplayImageViewController *divc = initialize display view controller class;