动态添加内容到UICollectionView

时间:2013-09-26 13:55:55

标签: ios uicollectionview collectionview

我有一个由Web服务支持的UICollectionView。我最初从服务中加载了100个项目到集合视图中。当用户到达视图的底部时,我会动态地加载内容的下一个“页面”。

这是有效的,但我的collectionView会闪烁并从顶部重新绘制整个视图。我试图让它开始在视图的底部绘制新内容。

将新内容添加到集合视图的代码:

- (void)insertIntoCollectionView: (int) itemCnt {

// only do the batchupdate for NON-initial load

if(curPage != 0) {
// Add items to main photos array, and update collectionview using batchUpdate
    [self.collectionView performBatchUpdates:^{

    // Get starting size before update
    int resultsSize = itemCnt;

    // Create a new array to hold the indexpath for the inserted data
    NSMutableArray *arrayWithIndexPaths = [NSMutableArray array];

    // Add indexpath objects to the new array to be added to the collection view
    for (int i = resultsSize; i < resultsSize + itemCnt; i++) {
        [arrayWithIndexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]];
    }
    // Update the collectionview
    [self.collectionView insertItemsAtIndexPaths:arrayWithIndexPaths];
}
    completion:nil];
} else {
    [self.collectionView reloadData];
}
curPage++;

有什么明显的吗?它在功能上有效,但看起来非常糟糕,所有的闪光和重新绘制。

1 个答案:

答案 0 :(得分:1)

好的,自己设法解决了。我使用的是resultSize变量的错误值。 for循环应该从当前数组计数的末尾开始,并循环遍历我们添加的项目数,从而在最后添加它们。在构建arrayWithIndexPaths时,我从数组索引1的开头开始,导致它重新绘制整个视图。