1

コレクション ビューに新しいセルを追加したいのですが、データを追加しても何も表示されません。

私はカスタム UICollectionViewLayout クラスを持っていますが、これはうまく機能しており、レイアウトを調整するためにデータソースにダミー データを保持しています。ダミー データを削除したので、何も表示されません。

アプリは壊れず、警告も表示されなかったので、問題がどこにあるのかを突き止めるのは困難でした。ここに手がかりが見つかりました。

(UICollectionViewLayout class)

-(NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
{    
     NSLog(@"ElementsInRect: – Visible cells info: %@", [self.collectionView.visibleCells description]);
     ...
}

ここで、データを追加し、-reloadData を呼び出してレイアウトを無効にしても、-visibleCells は空の配列を返します。そこで、-collectionView:cellForItemAtIndexPath: にブレークポイントを配置しましたが、このメソッドはまったく呼び出されていないことがわかりました。細胞は以前どのように現れましたか?

どんな助けでも大歓迎です。

4

3 に答える 3

1

データ ソース メソッド collectionView:numberOfItemsInSection: は、collectionView:cellForItemAtIndexPath: を呼び出すためにゼロ以外の数値を返す必要があります。データ ソースにダミー データがある場合は、ダミー データでした。ダミー データを削除したので、そのメソッドはおそらく 0 を返しています。データを追加すると、アイテムがデータ ソースに配置され、reloadData の呼び出しが機能するはずです。collectionView:numberOfItemsInSection: にログを入力し、何が返されるかを確認してください。

于 2013-09-13T21:22:04.780 に答える
0

セクション内の行数 - 使用できる数によって、cellForItemAtIndexPathが呼び出されるかどうかが決まります。

最初にビューが読み込まれると、これが呼び出されます。内でnumberOfItemsInSection、配列がある場合、[array count] はnil値を返す場合があります。

配列が設定される手順を完了してから、numberOfItemsInSection を再評価するコレクション ビューにデータを再読み込みします。これは、次のコードで実行できます。

[self.myCollectionView reloadData];

「myCollectionView は、ビュー内のコレクション ビュー アイテムに付けられた名前です」

于 2014-06-01T17:44:00.420 に答える