查询UICollectionView

时间:2013-04-19 12:41:03

标签: ios xcode indexing uicollectionview uicollectionviewcell

首先,对于这个愚蠢的问题感到抱歉,但我对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;

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

UIImage *cellImage;

if (myInt == 1) {

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

cell.imageView.image = cellImage;

如果我这样做,那么我会为每个项目获得index 2index 5。对于某些项目是否可以获得index 2而对于基于标志的某个项目可以获得index 5?或者还有其他方法吗?

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

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

抱歉,如果它混淆了。

1 个答案:

答案 0 :(得分:1)

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

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

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

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,则可以从reviewsDocs中删除最后一个对象,表示用户刚刚取消而不是查看doc(然后在集合视图上调用reloadData)。 p>