簡體   English   中英

在UIPageViewController中預加載UICollectionView

[英]Preloading a UICollectionView in a UIPageViewController

我在UICollectionView內使用UIPageViewController
每個頁面都是UICollectionViewController的相同子類的UICollectionViewController 每當我進行頁面滑動以查看以前從未見過的頁面時,由於UICollectionView花費了所有的委托/數據源方法所花費的時間,因此動畫會啟動一小段延遲(幾毫秒)。 所以我試圖實現一個預緩存系統,以便在用戶實際開始刷卡之前加載viewcontroller。
我能夠輕松創建它,但是由於某種原因,每當我在不可見的ViewController上調用reloadData時,都不會調用任何UICollectionViewDelegateFlowLayout委托方法。
到目前為止,我嘗試使用: setNeedsDisplaysetNeedsLayoutsetLayoutIfNeededinvalidateLayout強制它們被調用,但是沒有任何效果。
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM