2013-12-10 54 views
4

如何檢測pageViewController最後一頁已被調用,如果我想要添加的最後一頁上的手勢識別,並轉發到我的應用程序主頁面,是有辦法做到這一點?如何檢測UIPageViewController到達最後一頁

這裏是我的基本pageViewController片段, 在我UIPageViewControllerviewDidLoad

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Create the data model 
    _pageImages = @[@"[email protected]", @"[email protected]", @"[email protected]", @"[email protected]"]; 

    // Create page view controller 
    self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"RKYGuide"]; 
    self.pageViewController.dataSource = self; 

    RKYGuideContentViewController *startingViewController = [self viewControllerAtIndex:0]; 
    NSArray *viewControllers = @[startingViewController]; 
    [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; 

    [self addChildViewController:_pageViewController]; 
    [self.view addSubview:_pageViewController.view]; 
    [self.pageViewController didMoveToParentViewController:self]; 
} 

也實現了兩個頁面視圖控制器數據源的方法

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 
{ 
    NSUInteger index = ((RKYGuideContentViewController*) viewController).pageIndex; 

    if ((index == 0) || (index == NSNotFound)) { 
     return nil; 
    } 

    index--; 
    return [self viewControllerAtIndex:index]; 
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 
    NSUInteger index = ((RKYGuideContentViewController*) viewController).pageIndex; 

    if (index == NSNotFound) { 
     return nil; 
    } 

    index++; 

    if (index == [self.pageImages count]) { 
     // adding gesture 
     pageViewController.view.userInteractionEnabled = YES; 
     pageViewController.view.contentMode = UIViewContentModeScaleAspectFit; 
     UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] 
              initWithTarget:self 
              action:@selector(startAction)]; 
     [singleTap setNumberOfTapsRequired:1]; 
     pageViewController.view.userInteractionEnabled = YES; 
     [pageViewController.view addGestureRecognizer:singleTap]; 

     return nil; 
    } 

    NSLog(@"index: %u", index); 

    return [self viewControllerAtIndex:index]; 
} 

它工作正常,但我不知道到達最後一頁時添加手勢識別器的位置,並導向我的主頁面。

編輯:我沒有加入手勢識別在viewControllerAfterViewController,但它不會工作,沒有響應。

回答

0

修改你的方法,請嘗試: -

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 
    NSUInteger index = ((RKYGuideContentViewController*) viewController).pageIndex; 

    if (index == NSNotFound) { 
     return; 
    } 
    index++; 
    if (index == [self.pageImages count]) { 
     // adding gesture 
     pageViewController.view.userInteractionEnabled = YES; 
     pageViewController.view.contentMode = UIViewContentModeScaleAspectFit; 
     UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] 
              initWithTarget:self 
              action:@selector(startAction)]; 
     [singleTap setNumberOfTapsRequired:1]; 
     [self.view addGestureRecognizer:singleTap]; 
    } 
    return [self viewControllerAtIndex:index]; 
} 
2

你已經檢查在

if (index == [self.pageImages count]) {   
    return nil; 
} 

所以在達到最後一頁,如果你想你有你回來之前插入代碼在此塊一些特別的東西。

相關問題