访问单元格时出现UICollectionView段错误

时间:2015-07-10 23:08:58

标签: objective-c uikit uicollectionview uicollectionviewcell

我正在编写一个循环,它将遍历我的每个单元格,并使它们摆动。 (就像iOS主屏幕上的删除效果一样)。当我只使用一个单元格进行此操作时,它就像一个魅力。当我写一个循环来做这件事时,我得到一个奇怪的错误:

  

由于未捕获的异常而终止应用   'NSInternalInconsistencyException',原因:'请求数量   第2节之前的项目,当时只有1个部分   集合视图'

现在,当我研究这个错误时,我发现的唯一信息就是当用户尝试删除一个单元格时发生这种情况。那不是我的情况。 (好吧,至少。只是想让他们首先摆动)。

这是我的代码:

#define RADIANS(degrees) ((degrees * M_PI) / 180.0)
    CGAffineTransform leftWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(-5.0));
    CGAffineTransform rightWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(5.0));

-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer {

  int visible = self.gridView.visibleCells.count;

    for (int i = 0; i < visible; i++) {

    NSIndexPath *path = [NSIndexPath indexPathWithIndex:i];
    myCell = [self.gridView cellForItemAtIndexPath:path];

    myCell.transform = leftWobble;

    [UIView beginAnimations:@"wobble" context:(__bridge void *)(myCell)];
    [UIView setAnimationRepeatAutoreverses:YES]; // important
    [UIView setAnimationRepeatCount:10];
    [UIView setAnimationDuration:1.25];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(wobbleEnded:finished:context:)];

    myCell.transform = rightWobble; // end here & auto-reverse

    }
  [UIView commitAnimations];

}
@end

就像我说的,它适用于一个单元格,当我尝试编写循环来完成所有操作时抛出该错误。有谁知道这里有什么问题吗?

旁注,如何在此循环中以编程方式在集合视图单元格的左上方添加一个小删除按钮?我对集合视图非常非常新。

同样刚刚发现,当我侧滚动时,我的整个视图都摇摆不定,而不仅仅是细胞....非常奇怪。

1 个答案:

答案 0 :(得分:0)

试试这个:

#define RADIANS(degrees) ((degrees * M_PI) / 180.0)
CGAffineTransform leftWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(-5.0));
CGAffineTransform rightWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(5.0));

for (UICollectionView *cell in self.gridView.visibleCells) {
    cell.transform = leftWobble;
}

[UIView beginAnimations:@"wobble" context:nil];
[UIView setAnimationRepeatAutoreverses:YES]; // important
[UIView setAnimationRepeatCount:10];
[UIView setAnimationDuration:1.25];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(wobbleEnded:finished:context:)];

for (UICollectionViewCell *cell in self.gridView.visibleCells) {
    cell.transform = rightWobble;
}
[UIView commitAnimations];
  

如何在此循环中以编程方式在集合视图单元格的左上角添加一个小删除按钮?

将删除按钮UIButton添加到自定义UICollectionViewCell子类中的单元格子视图,并在需要时添加setHidden:NO

  

同样刚刚发现,当我侧滚动时,我的整个视图都摇摆不定   只是细胞....很奇怪。

编辑。