【问题标题】:How to handle backward scrolling in UIPageViewController?如何处理 UIPageViewController 中的向后滚动?
【发布时间】:2015-08-15 20:53:12
【问题描述】:

我使用了具有 5 个视图控制器的 UIPageViewController 进行滚动。现在就我而言,我只希望用户前进而不是后退。 意味着如果我在第一个视图控制器上并且我在屏幕上滑动,我将被导航到第二个视图控制器。现在我不能回到第一个视图控制器。

在此附上代码。

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
    return nil;
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
    if ([viewController isKindOfClass:[MyViewController1 class]]) {
        return [self viewControllerAtIndex:1];
    } else if ([viewController isKindOfClass:[MyViewController2 class]]) {
        return [self viewControllerAtIndex:2];
    } else if ([viewController isKindOfClass:[MyViewController3 class]]) {
        return [self viewControllerAtIndex:3];
    } else if ([viewController isKindOfClass:[MyViewController4 class]]) {
        return [self viewControllerAtIndex:4];
    } else {
        return nil;
    }
}

有什么想法???

【问题讨论】:

  • 没有成功。还有其他想法或链接吗?
  • 如果完成 == YES - (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed,则删除此方法中的前一个视图控制器

标签: ios objective-c uiviewcontroller uiscrollview uipageviewcontroller


【解决方案1】:

你可以解决这个问题,在 didFinishAnimating 委托方法设置 currentViewController 没有动画

    - (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
    {
    if (completed){
         __weak typeof(self) weakSelf = self;
          dispatch_async(dispatch_get_main_queue(), ^{
          [weakSelf.pageViewController setViewControllers:@[vc] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL];
         });
       }
    }

有关此问题的更多详细信息,请访问here

【讨论】:

  • 它使应用程序崩溃。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多