web-dev-qa-db-ja.com

iOS 10のUICollectionViewプリフェッチデータソース?

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

10
khunshan

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

このプロトコルはiOS 10で新しく追加されたもので、新しい機能を1つだけ実装する必要があります:

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

この関数が呼び出されると、渡されたindexPaths配列を調べて、「間もなく登場する」セルと、データの読み込みを開始するセルを知ることができます。

例で詳細を理解するには、リンクを参照してください ICollectionViewDataSourcePrefetching

22
Milap Kundalia

xcode 8から8.1に更新した後、同じ問題が発生しました。 (アウトレット参照)をmain.storyboardから削除することで解決できます。

Outtles references

これは、ストーリーボードにあるすべてのCollectionViewに当てはまります。また、ViewControllerはそのままにしておきます。

Class UIviewcontroller

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

}

次に、アプリをビルドして実行できます

ただし、(UICollectionViewDataSourcePrefetching)を使用する必要がある場合は、現在のUICollectionViewを削除し、後で新しいUICollectioViewを作成することをお勧めします。同様に、xcodeまたはSwiftを更新した後にUICollectionViewDataSourcePrefetchingを使用できます

4
Cristian Mora

ViewControllerにプロトコル "UICollectionViewDataSourcePrefetching"を実装します。

クラスViewController:UIViewController、UICollectionViewDataSourcePrefetching {

以下のデリゲートをストーリーボードのコレクションビューに設定する(添付の画像を参照)またはプログラムで設定する

ViewController'sviewDidLoadメソッド内

collectionView.delegate = self

collectionView.dataSource = self

collectionView.prefetchDataSource = self

この例を参照してください- https://github.com/Be-With-Viresh/CollectionViewWithPrefetch

enter image description here

1
be.with.veeresh

プロトコル「UICollectionViewDataSourcePrefetching」を追加し、以下の関数を使用します。

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

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

詳細については、リンクを参照してください: https://adoptioncurve.net/archives/2016/06/collection-view-updates-in-ios10/

0
Devil