0

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

4

2 回答 2

1

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

您应该缓存数据源。

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

于 2016-04-21T15:08:05.700 回答
0

除非视图可见,否则代表不会触发。为了应对您面临的延迟,您必须放弃 collectionview 并使用 collectionview 控制器并将这些 collectionview 控制器作为子级添加到页面控制器

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

CollectionController *collectionController = [self.storyboard instantiateViewControllerWithIdentifier:@"Calculate"];
        [self addChildViewController:collectionController];
        collectionController.view.frame = self.calculationView.bounds;
        [self.pageControllerView addSubview:collectionController.view];
        [collectionController didMoveToParentViewController:self];
于 2016-04-21T15:15:42.943 回答