避免用户使用 UIPageViewController 滚动到索引 -1 和 2

Posted

技术标签:

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

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

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

谢谢!

【问题讨论】:

不清楚您要达到的目标。请详细说明.. @iProgrammer 我在 pageViewController 上有 2 个视图。我希望如果用户在第一个视图上,他将无法向右滑动(只是向左滑动到第二个视图),如果他在第二个视图上,他将无法滑动向左(就在右侧 - 第一个视图)。现在清楚了吗? 【参考方案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 值来实现这一点。不过这很痛苦……让你检查一下。

【讨论】:

以上是关于避免用户使用 UIPageViewController 滚动到索引 -1 和 2的主要内容,如果未能解决你的问题,请参考以下文章

错误:页面控制跳转两次单页交换

使用firebase创建新用户时如何避免自动登录[重复]

OptionalBinding 使用 Guice 避免用户绑定

避免用户使用 UIPageViewController 滚动到索引 -1 和 2

避免使用 cookie 来自同一用户的多个视图

SQLServer:为啥要避免使用表值用户定义函数?