10

UICollectionViewすでにいくつかのセルで満たされている既存の にさらにセルを追加しようとしています。

CollectionView を使用しようとしましたreloadDataが、collectionView 全体をリロードしているようで、セルを追加したかっただけです。

誰でも私を助けることができますか?

4

2 に答える 2

6

UICollectionViewクラスには、アイテムを追加/削除するメソッドがあります。たとえば、ある項目index(セクション0) にアイテムを挿入するには、それに応じてモデルを変更してから、次のようにします。

int indexPath = [NSIndexPath indexPathForItem:index];
NSArray *indexPaths = [NSArray arrayWithObject:indexPath inSection:0];
[collectionView insertItemsAtIndexPaths:indexPaths];

ビューは残りを行います。

于 2012-11-01T20:49:42.020 に答える
5

すべてのセルをリロードせずに新しいセルをUICollectionViewに挿入する最も簡単な方法は、 performBatchUpdatesを使用することです。これは、以下の手順に従って簡単に実行できます。

// Lets assume you have some data coming from a NSURLConnection
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *erro)
{
      // Parse the data to Json
      NSMutableArray *newJson = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

      // Variable used to say at which position you want to add the cells
      int index;

      // If you want to start adding before the previous content, like new Tweets on twitter
      index = 0;

      // If you want to start adding after the previous content, like reading older tweets on twitter
      index = self.json.count;

      // Create the indexes with a loop
      NSMutableArray *indexes = [NSMutableArray array];

      for (int i = index; i < json.count; i++)
      {
            [indexes addObject:[NSIndexPath indexPathForItem:i inSection:0]];
      }

      // Perform the updates
      [self.collectionView performBatchUpdates:^{

           //Insert the new data to your current data
           [self.json addObjectsFromArray:newJson];

           //Inser the new cells
           [self.collectionView insertItemsAtIndexPaths:indexes];

      } completion:nil];
 }
于 2014-08-28T21:11:02.287 に答える