根据本文http://aplus.rs/2014/how-to-animate-in-uicollectionview-items/,我尝试一次加载一个UICollectionViewCell,以便在该单元格出现时为其设置动画。但是,当我调用代码循环cellCount ++时,会产生此错误:
由于未捕获的异常而终止应用程序
“ NSInternalInconsistencyException”,原因:“无效的更新:无效
第0节中的项目数。
更新(1)之后的现有部分必须等于
更新(1)之前该部分中包含的项目,正负
从该部分插入或删除的项目数(已插入1个,
0已删除),加上或减去移入或移出的项目数
该部分(移入0,移出0)。”
而且我无法为自己的生活弄清楚。
这是我的代码:
-(void)addCells{
for (self.cellCount=0; self.cellCount<50; self.cellCount++) {
[self.collectionView performBatchUpdates:^{
[self.collectionView insertItemsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForItem:self.cellCount inSection:0]]];
} completion:nil];
}
}
最佳答案
您可以使用计时器来执行此操作,该计时器的操作方法会将数据源数组中的对象添加到用于填充集合视图的可变数组中。
-(void)viewDidLoad {
[super viewDidLoad];
self.mutableArray = [NSMutableArray new];
self.data = @[@"one", @"one", @"one", @"one", @"one", @"one"];
[NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(addCells:) userInfo:nil repeats:YES];
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return self.mutableArray.count;
}
-(void)addCells:(NSTimer *) timer {
static int counter = 0;
[self.mutableArray addObject:self.data[counter]];
counter ++;
[self.collectionview insertItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:self.mutableArray.count -1 inSection:0]]];
if (self.mutableArray.count == self.data.count) {
[timer invalidate];
}
}