如何处理 UIPageViewController 中的向后滚动?

Posted

技术标签:

【中文标题】如何处理 UIPageViewController 中的向后滚动?【英文标题】:How to handle backward scrolling in 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;
    

有什么想法???

【问题讨论】:

***.com/questions/14426728/… 没有成功。还有其他想法或链接吗? 如果完成 == YES - (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed,则删除此方法中的前一个视图控制器 【参考方案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

【讨论】:

它使应用程序崩溃。

以上是关于如何处理 UIPageViewController 中的向后滚动?的主要内容,如果未能解决你的问题,请参考以下文章

嵌入 UINavigationController 时如何处理 UIView 区域减少的问题

c# FileSystemWatcher如何处理多个文件?

如何处理 MaxUploadSizeExceededException

如何处理 UsernameNotFoundException 春季安全

如何处理c#中的错误代码

Akka 如何处理消息版本?