2016-09-10 17 views
8

iOS 10で導入されたprefetchDataSourcesの目的は何ですか?iOS 10のUICollectionViewプリフェッチデータソース?

私はXCodeの8 GM種子でプロジェクトを実行し、エラーを取得開始しました:

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

答えて

19

UICollectionViewが今年は prefetchDataSourceと呼ばれる新しいプロパティを得ます。既存のデリゲートとdataSource のプロパティと同様に、新しい UICollectionViewDataSourcePrefetchingプロトコルを実装するオブジェクトに設定するだけで済みます。

このプロトコルは、iOSの10で真新しいであり、我々はただ一つの新しい機能を実装する必要があります。

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

この関数が呼び出されると、我々はindexPaths配列 を調べることができ、我々は」どんなセルが「すぐに出てくる」ことを知るために渡されます。したがって、 どのセルを読み込むべきでしょうか。

詳細に理解するための例と機能の下に使用し、プロトコル "UICollectionViewDataSourcePrefetching" を追加し、リンク UICollectionViewDataSourcePrefetching

1

実装プロトコル"UICollectionViewDataSourcePrefetching"をViewControllerをあなたに

として

クラスのViewController:でのUIViewController、UICollectionViewDataSourcePrefetchingストーリーボードでのあなたのコレクションビューにデリゲートを以下の{

セット(添付画像参照) またはプログラム

のViewControllerののviewDidLoad方法

collectionView .delegate = self

collectionView.dataSource = self

collectionView。prefetchDataSource =

この例を参照してください自己 - 私はXcodeの8から8.1にアップデートした後に同じ問題を抱えていたhttps://github.com/Be-With-Viresh/CollectionViewWithPrefetch

enter image description here

2

。 main.storyboardから(Outlets reference)を削除して解決することができました。私はストーリーボードに持っていたすべてのCollectionViewため

Outtles references

これ。また、ちょうどそのように私のViewControllerを残す:

Class UIviewcontroller

クラス(YourViewControllerName):(YourViewControllerType)、UICollectionViewDataSource、UICollectionViewDelegate {

}

その後、私は私のアプリ

を構築して実行することができます

ただし、使用する必要がある場合(UICollectionViewDataSourcePrefetching)、現在のUICollectionViewを削除し、後で新しいUICollectioViewを作成します。あなたはxcodeやswiftを更新した後にUICollectionViewDataSourcePrefetchingを使うことができるのと同じように

関連する問題