Swift3 iOS 10中的UICollectionView预取数据源?
iOS 10中引入的Swift3 iOS 10中的UICollectionView预取数据源?,swift3,ios10,xcode8,Swift3,Ios10,Xcode8,iOS 10中引入的预取数据源的目的是什么 我刚刚在XCode 8 GM Seed中运行了一个项目,并开始出现错误: MessagesExtension[17902:1238603] *** Assertion failure in -[UICollectionView _createPreparedSupplementaryViewForElementOfKind:atIndexPath:withLayoutAttributes:applyAttributes:], /BuildRoot/Li
预取数据源的目的是什么
我刚刚在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
UICollectionView今年获得了一个名为
预取数据源。就像现有的委托和数据源一样
属性,我们可以简单地将其设置为实现新
UICollectionViewDataSourcePrefetching协议
此协议在iOS 10中是全新的,只需要实现一个新功能:
public func collectionView(_ collectionView: UICollectionView, prefetchItemsAt indexPaths: [IndexPath])
调用此函数时,我们可以检查indexPaths数组
我们被传进来是为了知道哪些细胞“即将出现”,因此
我们应该开始为哪些单元格加载数据
有关示例的详细理解,请参阅链接
添加协议“UICollectionViewDataSourcePrefetching”
然后使用下面的函数
collectionView(collectionView:UICollectionView,prefetchItemsAt IndexPath:[IndexPath])
collectionView(\ucollectionview:UICollectionView,cancelPrefetchingForItemsAt IndexPath:[IndexPath])
有关详细信息,请参考以下链接:在ViewController中实现协议“UICollectionViewDataSourcePrefetching”
类ViewController:UIViewController,UICollectionViewDataSourcePrefetching{
在序列图像板中将以下代理设置为集合视图(请参见附图)
或以编程方式
在ViewController的viewDidLoad方法中
collectionView.delegate=self
collectionView.dataSource=self
collectionView.prefetchDataSource=self
请参阅此示例-
从xcode 8升级到8.1后,我也遇到了同样的问题。
我可以从main.storyboard中删除(Outlets引用)来解决这个问题
这适用于我在故事板中拥有的每个CollectionView。请将我的ViewController保留为:
类(YourViewControllerName):(YourViewControllerType)、UICollectionViewDataSource、UICollectionViewDelegate{
}
然后我可以构建并运行我的应用程序
但是,如果您需要使用(UICollectionViewDataSourcePrefetching),我建议您删除当前的UICollectionView,稍后创建一个新的UICollectionView。就像这样,您可以在更新xcode或swift后使用UICollectionViewDataSourcePrefetching