[英]Preloading a UICollectionView in a UIPageViewController
我在UICollectionView
內使用UIPageViewController
。
每個頁面都是UICollectionViewController
的相同子類的UICollectionViewController
。 每當我進行頁面滑動以查看以前從未見過的頁面時,由於UICollectionView
花費了所有的委托/數據源方法所花費的時間,因此動畫會啟動一小段延遲(幾毫秒)。 所以我試圖實現一個預緩存系統,以便在用戶實際開始刷卡之前加載viewcontroller。
我能夠輕松創建它,但是由於某種原因,每當我在不可見的ViewController
上調用reloadData
時,都不會調用任何UICollectionViewDelegateFlowLayout
委托方法。
到目前為止,我嘗試使用: setNeedsDisplay
, setNeedsLayout
, setLayoutIfNeeded
和invalidateLayout
強制它們被調用,但是沒有任何效果。
viewcontroller
不是nil
。 該view
不是nil
。
有人知道這可能是什么原因嗎? 是因為ViewController不在視口中嗎?
首先加載視圖控制器可能不是最好的主意。
您應該緩存數據源。
關於reloadData無法在未顯示的控制器上正常工作,這是正確的,因為該控制器不存在。
除非視圖可見,否則委托將不會觸發。要解決您面臨的延遲,您必須放棄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];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.