gpt4 book ai didi

ios - UIPageViewController 第二页和第三页闪烁为白色

转载 作者:IT王子 更新时间:2023-10-29 05:48:30 26 4
gpt4 key购买 nike

我有一个 pageviewcontroller,但是当我滑动到第二页时,它会在一瞬间显示正确的 Controller ,然后屏幕变白,如果我再次滑动它会显示为它应该是。它还有 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
}

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

最佳答案

已更新

您可以使用 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
}

原创

您不应该缓存与 pageviewcontroller 相关的参数。UIPageViewController 有时会预加载您的页面以获得更好的性能。

例如:

您有 3 个页面要显示。

您现在显示的是首页首字母。

然后你滚动到第二个 View 。 viewControllerAfter 调用第一个 viewcontroller 的 viewController 来请求第二个 viewcontroller。

并且 viewControllerAfter 再次调用第二个 viewcontroller 的 viewController 来请求第三个 viewcontroller(预加载)。

在这种情况下如果缓存索引,会导致不可预知的结果。

关于ios - UIPageViewController 第二页和第三页闪烁为白色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46150696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com