0

我制作了一个UICollectionView,其中包含一些单元格并且它显示正确,现在我想为一个或多个单元格设置一个选定的标签,在自定义单元格中,我可以使用两种方法来实现它:

方式1:设置selectedBackgoundView

self.selectedBackgroundView = backgroundView;  

方式2:添加一个UIImageView作为选定的标签

[_coverImageView addSubview:_selectImageView];
//coverImageView is image for cell,
//selectImageView is a tag imageView for selected.

那么问题来了:

例如,我选择了第一个单元格,当我滚动 UICollectionView 时,方式 1 仍然显示选择的第一个单元格,但使用方式 2,_selectImageView将添加到另一个单元格。

我知道这是由Reuse Cell引起的,但不知道如何处理它。

4

2 回答 2

0

您应该在创建单元格时添加它,而不是在创建单元格添加您选择的标签。

您没有说明如何创建自定义集合视图单元格,但听起来好像您可能没有使用自己的子类,只是将您需要的内容添加到普通的UICollectionViewCell. 您会发现创建自己的子类要容易得多,并使用公开的图像视图进行设置,可以根据需要启用/禁用。您可以完全在代码中创建自定义单元格,也可以与 XIB 结合使用 - 无论您喜欢哪种方式。

于 2013-06-18T08:13:09.707 回答
0

最近我正在做一个类似的项目。虽然是很久以前的事了,但我希望能帮助有需要的人。

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

MyCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:collectionCellID forIndexPath:indexPath];
if (cell == nil) {
    cell = [[MyCollectionViewCell alloc]init];
}
//Change Selected State
if([[collectionView indexPathsForSelectedItems] indexOfObject:indexPath] != NSNotFound){
    UIView *bgView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 250, 250)];
    bgView.backgroundColor = kLightBlueColor;
    [cell setSelectedBackgroundView:bgView];
    cell.selected = YES;
}
cell.title.text = @"Hello World";

return cell;  
}
于 2015-11-02T10:40:47.560 回答