如何从UICollectionView仅重新加载更新的单元格

时间:2014-01-03 06:36:03

标签: ios iphone objective-c uicollectionview

我有几个单元写入UICollectionView并重新加载它们需要很长时间。如何仅在修改单元格数据时重新加载?这是我尝试过的一件事:

  if([oldDataSource count] != [currentDataSource count])
   {
      [collectionView reloadData];
   }

然而,我仍然不想处理重新加载整个的事情。我也试过了:

if([oldDataSource count] < [currentdataSource count])
{
//something was added. //reload the last item in the current data source 
}

这也失败了,因为我无法重新加载内存中不存在的东西。此方法也不起作用,因为如果从我的数据源中删除了某些内容,Cell仍将保留在界面中,并且如果单击则会崩溃。

那么,处理已编辑单元格的最佳方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

仅重新加载指定索引路径的项目。

- (void)reloadItemsAtIndexPaths:(NSArray *)indexPaths

<强>讨论 调用此方法可以有选择地仅重新加载指定的项目。这会导致集合视图丢弃与这些项关联的任何单元格并重新显示它们。

答案 1 :(得分:1)

尝试获取想要更改的单元格。则: -

  1. 如果你能得到它。更改数据源并重新加载。
  2. 如果它不反映变化。更改数据源,然后更改单元格的相应新值,然后在单元格上调用setNeedsDisplay
  3. 如果未返回单元格(表示),则它不在视图中。只需更改数据源即可。当单元格被带入视图时,将反映数据源的变化
  4. 尝试这三种中的任何一种。 干杯。玩得开心