【问题标题】:Avoid user to scroll to index -1 and 2 with UIPageViewController避免用户使用 UIPageViewController 滚动到索引 -1 和 2
【发布时间】:2015-12-23 17:40:25
【问题描述】:

我有一个带有 2 个 VC(索引 0 和 1)的 UIPageViewController,我想避免用户在第一个视图(索引 0)上向右滚动并在第二个视图(索引 1)上向左滚动.

有谁可以告诉我该怎么做?

谢谢!

【问题讨论】:

  • 不清楚您要达到的目标。请详细说明..
  • @iProgrammer 我在 pageViewController 上有 2 个视图。我希望如果用户在第一个视图上,他将无法向右滑动(只是向左滑动到第二个视图),如果他在第二个视图上,他将无法滑动向左(就在右侧 - 第一个视图)。现在清楚了吗?

标签: ios iphone cocoa-touch uipageviewcontroller


【解决方案1】:

试试这些数据源方法:

@SWIFT 版本

public func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
    var index = viewControllers.indexOf(viewController)
    if index == 0 || index == NSNotFound {
        return nil
    }

    index--
    return viewControllerAtIndex(index)
}

public func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
    var index = viewControllers.indexOf(viewController)
    if index == NSNotFound {
        return nil
    }

    index++
    if index == viewControllers?.count {
        return nil
    }

    return viewControllerAtIndex(index)
}

@OBJC 版本

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
    NSInteger index = [viewControllerArray indexOfObject:viewController];

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

    index--;
    return [viewControllerArray objectAtIndex:index];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
    NSInteger index = [viewControllerArray indexOfObject:viewController];

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

    if (index == [viewControllerArray count]) {
        return nil;
    }
    return [viewControllerArray objectAtIndex:index];
}

【讨论】:

  • 用户可以滚动,它只是在侧面显示黑色视图,我不想要黑色视图,我希望它不能在这一侧滚动
【解决方案2】:

您可以使用 UIPageViewcontroller 的 Index 值来实现这一点。不过这很痛苦……让你检查一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-12
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    相关资源
    最近更新 更多