0

首先,很抱歉这个愚蠢的问题,但我是collectionview的新手,也有点困惑。

我正在努力UICollectionView。我正在从我的plist文件中将图像传递给它。我有 6 到 8 项数组,每个数组都有 6 项(NSString)。我正在使用此代码..

static NSString *identifier = @"Cell";
CollectionViewCell *cell = (CollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

NSArray *temp = [list objectAtIndex:indexPath.item];

UIImage *cellImage;
cellImage = [UIImage imageNamed:[temp objectAtIndex:2]];
cell.imageView.image = cellImage;

现在,我想将索引更改为objectAtIndex:5当我得到标志 1 或 0 时,它应该用于特定项目。

UIImage *cellImage;

if (myInt == 1) {

    cellImage = [UIImage imageNamed:[temp objectAtIndex:2]];
}
else{
    cellImage = [UIImage imageNamed:[temp objectAtIndex:5]];
}

cell.imageView.image = cellImage;

如果我这样做,那么我要么得到,index 2要么得到index 5每个项目。是否可以根据标志获得index 2某些项目和某些项目?index 5或者还有其他方法吗?

任何建议将不胜感激。谢谢你。

编辑:
我的收藏视图连续有 3 个图像(项目)。如果我点击任何图标,它将重定向到新视图以阅读一些文档。栏上的那个视图中有一个完成按钮,它给出一个标志值(0/1)。现在,如果我得到标志 1,那么我只想为这种情况更改 collectionview 图标。但是在这里,通过这个给定的代码,所有图标都替换为index 5,但我只想要来自 的第一个图标和来自 的index 5其他 2 个图标index 2。就像只是为了区分第一个文档是经过审查的。

对不起,如果它混淆。

4

1 回答 1

1

我认为您不想在这种情况下以这种方式使用 myInt 。相反,你想在你的集合视图控制器中创建一个数组来跟踪任何被选中的项目。因此,如果您有一个名为 reviewDocs 的属性(指向 NSMutableArray),您将添加所选单元格的 indexPath。

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
    [self.reviewedDocs addObject:indexPath];
}

然后,在您的 cellForItemAtIndexPath: 方法中,您将根据当前 indexPath 是否与 reviewDocs 数组中的一个匹配来选择图像。

UIImage *cellImage;

if ([self.reviewedDocs containsObject:indexPath]) {

    cellImage = [UIImage imageNamed:[temp objectAtIndex:5]];
}
else{
    cellImage = [UIImage imageNamed:[temp objectAtIndex:2]];
}

在您返回集合视图控制器并重新加载数据之前,图像不会改变。我不确定您使用 myInt 标志的目的是什么,但例如,如果您有一个完成按钮和一个取消按钮,您可能会分别为这两个操作返回 1 或 0。在您的集合视图控制器的 viewDidAppear 方法中,如果 myInt 为 0,则您可以从 reviewDocs 中删除最后一个对象,这表明用户只是取消而不是查看文档(然后在集合视图上调用 reloadData)。

于 2013-04-19T15:43:49.780 回答