iOS 10 collectionView:prefetchItemsAt未调用

时间:2016-07-12 10:26:34

标签: ios uicollectionview ios10

我正在尝试collectionView:prefetchItemsAt协议的新collectionView:cancelPrefetchingForItemsAtUICollectionViewDataSourcePrefetching方法,但这两种方法都没有被调用。委托是通过接口构建器设置的(尝试从具有相同结果的代码),部署目标设置为iOS 10,因此理论上它应该工作。所以我的问题是,为了使它工作,我错过了一些东西,或者机制比我想象的更复杂,系统没有觉得它应该进行预取?

5 个答案:

答案 0 :(得分:1)

继承UICollectionViewDataSourcePrefetching中的协议ViewController

class ViewController: UIViewController, UICollectionViewDataSourcePrefetching {

将以下代理设置到storyboard中的集合视图(请参阅附图),或以编程方式执行此操作。

override func viewDidLoad() {
    super.viewDidLoad()

    collectionView.delegate = self
    collectionView.dataSource = self
    collectionView.prefetchDataSource = self
}

请参阅此示例:https://github.com/Be-With-Viresh/CollectionViewWithPrefetch

delegates hooked up in storyboard

答案 1 :(得分:1)

可能是您正在设置estimateItemSize,在这种情况下可能不会调用预取。

来源:在一个迷你演示应用程序中进行了尝试。

答案 2 :(得分:1)

来自docs

  

集合视图不会立即为需要的单元格调用此方法,因此您的代码不得依赖此方法加载数据

答案 3 :(得分:0)

您必须检查集合视图属性是否已启用“ isPrefetching”。如果未启用,则将其值设置为true。

collectionView.isPrefetchingEnabled = true  

答案 4 :(得分:0)

重写func collectionView(_ collectionView:UICollectionView,willDisplay单元格:UICollectionViewCell,forItemAt indexPath:IndexPath){

//向此功能添加代码

self.collectionView(collectionView,prefetchItemsAt:[indexPath])<<<<<< / p>

}