データソースを変更して、コレクション ビューに表示されているデータを交換しています。これは、タブのようなインターフェースの一部として行われています。新しいデータがロードされたら、スクロール インジケーターを点滅させて、ビューポートの外にさらにデータがあることをユーザーに伝えたいと思います。
すぐに
コレクション ビューがまだデータをロードしていないため、すぐに実行しても機能しません。
collectionView.dataSource = dataSource2;
[collectionView flashScrollIndicators]; // dataSource2 isn't loaded yet
ディスパッチ_非同期
後で呼び出しをディスパッチしてflashScrollIndicators
も機能しません。
collectionView.dataSource = dataSource2;
dispatch_async(dispatch_get_main_queue(), ^{
[collectionView flashScrollIndicators]; // dataSource2 still isn't loaded
});
performSelector:withObject:afterDelay:
時間遅延の後に実行するとflashScrollIndicators
機能しますが(SOの別の場所で見ました)、スクロールインジケーターが表示されると少し遅れます。遅延を減らすことはできますが、競合状態につながるだけのようです:
collectionView.dataSource = dataSource2;
[collectionView performSelector:@selector(flashScrollIndicators) withObject:nil afterDelay:0.5];
コレクション ビューが新しいデータを取得してコンテンツ ビューのサイズを変更するとすぐにスクロール インジケーターを点滅させるためにフックできるコールバックはありますか?