如何让uipageviewcontroller进入圈子 [英] how to make uipageviewcontroller go in circles

查看:88
本文介绍了如何让uipageviewcontroller进入圈子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm having a UIPageViewController that shows different pages. The current behaviour is that it stops scrolling when I reached the last page. What I now want to achieve is that when on the last page and scrolling right, it goes to the first page. When at the first page, go to the last page when scrolling left. So basically let the PageViewController show the pages in circles. My first approach works quite well while having more than one page, or starting with one single page:

- (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];
    }
}

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

But when I remove the pages so that only one is left, it still remembers either the before or after page, and shows it accordingly. Even though there is only one page left in the array. Any help is highly appreciated.

推荐答案

您可以将其实现为

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

- (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];
}

当您使用最后一个索引时将其设置为零索引

- (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];
}

这篇关于如何让uipageviewcontroller进入圈子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆