iOS 10中的UICollectionView预取数据源?

时间:2016-09-10 20:19:15

标签: swift3 ios10 xcode8

在iOS 10中引入prefetchDataSources的目的是什么?

我刚刚在XCode 8 GM Seed中运行了一个项目并开始出错:

MessagesExtension[17902:1238603] *** Assertion failure in -[UICollectionView _createPreparedSupplementaryViewForElementOfKind:atIndexPath:withLayoutAttributes:applyAttributes:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3599.6/UICollectionView.m:2161

enter image description here

4 个答案:

答案 0 :(得分:22)

  

UICollectionView今年获得了一个新属性   prefetchDataSource。就像现有的委托和dataSource一样   属性,我们可以简单地将它设置为实现new的一些对象   UICollectionViewDataSourcePrefetching协议。

此协议在iOS 10中是全新的,需要我们只实现一项新功能:

public func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath])
  

调用此函数时,我们可以检查indexPaths数组   我们已经过去了解哪些细胞即将出现"因此   我们应该开始为哪些单元格加载数据。

详细了解与示例参考链接 UICollectionViewDataSourcePrefetching

答案 1 :(得分:4)

从xcode 8更新到8.1后,我遇到了同样的问题。 我可以解决它从main.storyboard中删除(Outlets reference)。

Outtles references

这是我在故事板中的每个CollectionView。还要保留我的ViewController:

Class UIviewcontroller

Class(YourViewControllerName):( YourViewControllerType),UICollectionViewDataSource,UICollectionViewDelegate {

}

然后我可以构建并运行我的应用程序

但是,如果你需要使用(UICollectionViewDataSourcePrefetching),我建议你删除当前的UICollectionView,稍后再创建一个新的UICollectioView。就像你可以在更新xcode或swift之后使用UICollectionViewDataSourcePrefetching

答案 2 :(得分:1)

在ViewController中实现协议" UICollectionViewDataSourcePrefetching"

类ViewController:UIViewController,UICollectionViewDataSourcePrefetching {

将以下代理设置为storyboard中的集合视图(请参阅附图) 或以编程方式

ViewController viewDidLoad 方法

collectionView.delegate = self

collectionView.dataSource = self

collectionView.prefetchDataSource = self

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

enter image description here

答案 3 :(得分:0)

添加协议" UICollectionViewDataSourcePrefetching" 然后使用以下功能。

  1. collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath])

  2. collectionView(_ collectionView: UICollectionView, cancelPrefetchingForItemsAt indexPaths: [IndexPath])

  3. 有关详细信息,请参阅链接:https://adoptioncurve.net/archives/2016/06/collection-view-updates-in-ios10/