UIPageViewController的第二页和第三页闪烁为白色

Elh*_*oej 8 ios uipageviewcontroller swift

我有一个pageviewcontroller,但当我滑到第二页时,它显示正确的控制器一瞬间,然后屏幕变白,如果我然后再次滑动它将显示应该是.它还有4页而不是我想要的3页.

这是一个演示此问题的视频:https://streamable.com/i1inq

索引如下:

 profileController.index = 0
 discoverController.index = 1
 matchController.index = 2

func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?
{
    if index == 0
    {
        index = discoverController.index
        return discoverController
    }
    else if index == 1
    {
        index = matchController.index
        return matchController
    }

    return nil
}
Run Code Online (Sandbox Code Playgroud)

编辑:我还应该提到初始控制器是profileController,因此当应用程序运行时索引从0开始.

Cod*_*dus 9

更新

您只需使用index属性修改代码自定义viewcontroller即可:

func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?
{
    let index = (viewController as? MyCustomVCWithIndexForPageViewController).index
    if index == 0
    {
        index = discoverController.index
        return discoverController
    }
    else if index == 1
    {
        index = matchController.index
        return matchController
    }

    return nil
}
Run Code Online (Sandbox Code Playgroud)

原版的

您不应该缓存与pageviewcontroller相关的参数. UIPageViewController有时preload你的页面有更好的表现.

例如:

您有3页要显示.

您现在显示第一页首页.

然后滚动到第二个视图.viewControllerAfter调用viewController第一个viewcontroller来请求第二个viewcontroller.

viewControllerAfter再次调用viewController第二个viewcontroller来请求第三个viewcontroller(预加载).

在这种情况下,如果缓存索引,将导致不可预测的结果.