如何让uipageviewcontroller进入圈子

Oli*_*bel 9 objective-c ios uipageviewcontroller swift

我有一个显示不同页面的UIPageViewController.当前的行为是当我到达最后一页时它停止滚动.我现在想要实现的是,当在最后一页并向右滚动时,它会转到第一页.在第一页时,向左滚动时转到最后一页.所以基本上让PageViewController以圆圈形式显示页面.我的第一种方法在有多个页面或从一个页面开始时效果很好:

- (UIViewController*) pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(TMCollectionViewController *)viewController
{

    if((viewController.pageIndex) >= 1)
    {
        return _viewControllers[viewController.pageIndex - 1];
    }
    else
    {
        if ([_viewControllers count] == 1) {
            return nil;
        }
        return [_viewControllers objectAtIndex:[_viewControllers count]-1];
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我删除页面以便只剩下一个页面时,它仍然会记住页面之前或之后,并相应地显示它.即使数组中只剩下一页.任何帮助都非常感谢.

Hee*_*ena 13

你可以实现它

当您在第一个索引上并向左滑动时,使其索引=总页数

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

    if ((index == 0) || (index == NSNotFound)) {
        index = self.pageTitles.count;
    }

    index--;
    return [_viewControllers objectAtIndex:index];
}
Run Code Online (Sandbox Code Playgroud)

当您在最后一个索引上时,将其设置为零索引

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

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

    index++;
    if (index == [self.pageTitles count]) {
        index = 0;
    }
    return [_viewControllers objectAtIndex:index];
}
Run Code Online (Sandbox Code Playgroud)