我正在我的应用中创建一个页面,其中分段控件显示两个不同的集合视图。 CV的数据来自包含两个不同长度数组的API。
我的问题是第一个集合视图在数组中的项目多于第二个集合视图,第二个集合视图通过cellAtIndexPath迭代的次数超过了所需的次数,因此返回错误 * 终止应用程序未被捕获的异常' NSRangeException',原因:' - [__ NSCFArray objectAtIndex:]:index(1)超出边界(1)'
有人可以帮我吗?
由于
- (NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
DataStore *ds = [DataStore sharedDataStore];
if (self.cvActive) {
return ds.arLikesActive.count;
}
else {
return ds.arLikesExpired.count;
}
}
- (UICollectionViewCell *) collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
DataStore *ds = [DataStore sharedDataStore];
if (collectionView == self.cvActive) {
CollectionViewCellLikedActive *cell = (CollectionViewCellLikedActive *)[collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
self.dProductActive = ds.arLikesActive[indexPath.item];
cell.ivActiveProduct.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:self.dProductActive[@"ImageURL"]]]];
return cell;
}
else {
CollectionViewCellLikedWhereAreTheyNow *cell = (CollectionViewCellLikedWhereAreTheyNow *)[collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
self.dProductInactive = ds.arLikesExpired[indexPath.item];
cell.ivWhereAreTheyNowProduct.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:self.dProductInactive[@"ImageURL"]]]];
return cell;
}
答案 0 :(得分:1)
我认为问题是你在numberOfItemsInSection方法中的if语句,
if (self.cvActive) {
这不总是评估为真吗?它应该看起来就像你在cellForItemAtIndexPath中的那个,
if (collectionView == self.cvActive) {