在UIPageViewController中预加载UICollectionView

时间:2016-04-21 15:04:56

标签: ios objective-c uicollectionview uipageviewcontroller uicollectionviewdelegate

我在UICollectionView内使用UIPageViewController 每个页面都是UICollectionViewController的同一子类的实例。 每当我进行页面滑动以查看我以前未见过的页面时,由于UICollectionView需要通过所有委托/数据源方法所需的时间,动画会有一个小的延迟(几毫秒)开始。 所以我试图在用户实际开始滑动之前实现一个预缓存系统来加载viewcontroller 我可以轻松地创建它,但出于某种原因,每当我在不可见的reloadData上调用ViewController时,都不会调用UICollectionViewDelegateFlowLayout委托方法。
到目前为止,我尝试使用:setNeedsDisplaysetNeedsLayoutsetLayoutIfNeededinvalidateLayout来强制它们被调用,但没有任何效果。
viewcontroller不是nilview不是nil 有谁知道可能是什么原因?是因为viewcontroller不在视口中吗?

2 个答案:

答案 0 :(得分:1)

首先加载视图控制器可能不是最好的主意。

您应该缓存数据源。

关于reloadData与未显示的控制器无法正常工作,你是对的,这是因为控制器不存在。

答案 1 :(得分:0)

除非视图可见,否则代表不会触发。为了抵消你所面临的延迟,你必须抛弃集合视图并使用集合视图控制器并将这些集合视图控制器作为子节点添加到页面控制器

注意:为每个集合控制器设置适当的框架

UIViewController