2013-02-07 13 views
17

コレクションビューが表示されている間にUICollectionViewを再読み込み/更新する方法を知っている人はいますか?基本的には、私はUITableviewの標準のreloadDataメソッドに似たものを探しています。UICollectionviewを更新する

+5

多分私は誤解していますが、UICollectionViewはreloadDataを実装しています。 – danh

答えて

45

あなただけのもリロードすることができ[self.myCollectionView reloadData];個々のセクションやアイテムを呼び出すことができます。

[self.myCollectionView reloadSections:indexSet]; 
[self.myCollectionView reloadItemsAtIndexPaths:arrayOfIndexPaths]; 
+9

WFIW私は[myTableView reloadData]を呼び出すのに慣れているが、UICollectionViewsを使用して[myCollectionView.collectionView reloadData]を呼び出す必要があるため、人々がこの問題を克服している理由が考えられます。 – capikaw

+0

[self.myCollectionView reloadData];一度だけ電話をかける。 すべてのデータを再読み込みします。 –

9
[self.collectionView reloadData]; 
+0

これは本当に望ましい結果を達成しますが、reloadDataを使用するとすべてのセルが再描画され、パフォーマンスに影響を与える可能性があります。 – DrunkenBeard

+0

良い考えではありません。テーブル全体をリロードすると、悪い性能とエネルギーが得られます。 – Karsten

0

正しいと最善の方法は、

NSMutableArray *indexPaths = [NSMutableArray array]; 
//prepare some data 
//batchupdate as block 
[self.collectionView performBatchUpdates:^{ 
    //operations like delete 
    [self.collectionView deleteSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, count)]]; 
    [self.collectionView insertItemsAtIndexPaths:indexPaths]; 
} completion:^(BOOL finished) { 
    // call something when ready 
    } 
}]; 

を使用することで、すべてがうまくアニメーション予め計算します。ベストプラクティスは、競合を避けるために、まずすべての要素を削除して追加することです。

+1

あなたは私の日を救った!ありがとう –

関連する問題