在具有不同长度数组的一个视图控制器中Objc 2个集合视图

时间:2014-06-14 15:03:05

标签: objective-c uicollectionview nsrangeexception

我正在我的应用中创建一个页面,其中分段控件显示两个不同的集合视图。 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;

}

1 个答案:

答案 0 :(得分:1)

我认为问题是你在numberOfItemsInSection方法中的if语句,

if (self.cvActive) {

这不总是评估为真吗?它应该看起来就像你在cellForItemAtIndexPath中的那个,

if (collectionView == self.cvActive) {