ios - 如何删除 UIPageViewController 上的无限滚动?

标签 ios objective-c uipageviewcontroller

我有两个 Storyboard,标识符为“一”和“二”,我有一个 UIPageViewController 及其子类。在子类中,我有以下代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.dataSource = self;
    self.delegate = self;
    counter = 0;

    [self setViewControllers:@[[self.storyboard instantiateViewControllerWithIdentifier:@"one"]] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
}

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

    if ([viewController isKindOfClass:[ViewController class]]){
    return [self.storyboard instantiateViewControllerWithIdentifier:@"one"];
    }

    return nil;


}


- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{

    if ([viewController isKindOfClass:[secondViewController class]]){
    return [self.storyboard instantiateViewControllerWithIdentifier:@"two"];
    }

    return nil;

}

这段代码工作得很好,但是有一个问题!滚动是无限的;就我而言,我需要取下无限卷轴。我该怎么做?

首先是创建一个计数器并在我的方法中进行检查:

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

    if (counter < 1) {
        NSLog(@"Don't get back");
        return nil;
    }

    ......

}


- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{

    if (counter >= 1) {
        NSLog(@"Don't go anymore");
        return nil;
    }

    ....
}

第二件事是尝试使用counter++counter--。这对我来说是个大难题,有人有更好的主意吗?

最佳答案

如果您只有两个页面,则在收到页面请求时只需检查当前页面是否已经不是您要提供的页面。为此,您需要一种方法来识别它。

如果每个页面都有不同的类,您可以简单地检查类。否则,您将需要一些其他标准。

如果使用自定义类:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    if ([viewController isKindOfClass:[ClassOfSecondViewController class]])
    {
        return [self.storyboard instantiateViewControllerWithIdentifier:@"one"];
    }

    return nil;
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    if ([viewController isKindOfClass:[ClassOfFirstViewController class]])
    {
        return [self.storyboard instantiateViewControllerWithIdentifier:@"two"];
    }
    return nil;
}

关于ios - 如何删除 UIPageViewController 上的无限滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34398359/

相关文章:

swift - 更改页面控件的位置不起作用

ios - 有没有办法让 drawRect 现在工作?

ios - 更新标题时如何使按钮停止闪烁

iPhone 应用程序中来自 SpeakHere 的 C++

objective-c - Objective c UIPageViewController 在翻转时移除阴影

ios - UIPageViewController 断言失败

c# - Xamarin.iOS 调试器不附加

ios - 证书保留在ASIHTTPRequests的缓存中?

ios - setDelegate 上的语义问题

iphone - iOS 如何验证应用程序包?