这是我为CollectionViewCustomCells设置动画的代码。
-(void)viewDidAppear:(BOOL)animated{
rowIndex = 0;
[NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(targetMethod)
userInfo:nil
repeats:YES];
}
-(void)targetMethod
{
[self.offerCollectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:rowIndex inSection:1]
atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally
animated:YES];
rowIndex=(rowIndex<parserDataContentArrayForExhibitor.count-1)?(rowIndex+1):0;
// if (rowIndex == parserDataContentArrayForExhibitor.count) {
// rowIndex = 0;
// }
}
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'attempt to scroll to invalid index path: <NSIndexPath 0xab55110> 2 indexes [1, 0]'
每次运行我的应用程序时,我都会收到此异常。 但有时应用程序运行良好。 我相信有一些泄漏或某种东西。 我尝试了什么:当我用Google搜索时,我发现这种错误是因为如果我写了一个不存在的部分,并且第一部分的部分索引为0。
所以我将目标方法改为:
-(void)targetMethod
{
[self.offerCollectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:rowIndex inSection:0]
atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally
animated:YES];
rowIndex=(rowIndex<parserDataContentArrayForExhibitor.count-1)?(rowIndex+1):0;
// if (rowIndex == parserDataContentArrayForExhibitor.count) {
// rowIndex = 0;
// }
}
但是,同样的事情发生在异常参数的微小变化上。
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'attempt to scroll to invalid index path: <NSIndexPath 0xab22ea0> 2 indexes [0, 0]'
部门代码:
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
return 1;
}
PLease帮助我,因为这对我来说是个新鲜事。
谢谢。
最诚挚的问候。
答案 0 :(得分:5)
将此行保留在if
:
if (parserDataContentArrayForExhibitor.count > 0) {
rowIndex = (rowIndex<parserDataContentArrayForExhibitor.count - 1) ? (rowIndex + 1) : 0;
}
由于您传递的区数为1,因此保留0和0而不是1,因为索引是基于零的。如果你有numberOfSectionsInCollectionView = 2那么你可以有两个部分{0, 1}
[self.offerCollectionView scrollToItemAtIndexPath: [NSIndexPath indexPathForItem: rowIndex inSection: 0];
atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally
animated:YES];