子类UICollectionViewCell不更新图像

时间:2017-02-18 00:40:03

标签: ios objective-c cocoa uicollectionview

我正在尝试通过在每个单元格视图中添加徽章来使集合视图显示多个选择。它正确设置初始(未选定)图像,但视图永远不会更新为所选版本。我已尝试手动设置,因此我知道所选图像有效且在单元格中可见。 NSLog显示已选择'按预期切换,断点显示正在执行对图像的适当分配。请原谅,在午夜之后,太棒了,太棒了。

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    SMListCollectionViewCell *cell = (SMListCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];

if ( !indexPath.row )
{
    cell.image.image = [UIImage imageNamed:@"Add"];
    cell.label.text = @"Create New";
    cell.imageBadge.hidden = YES;
}
else
{
    cell.image.image = [UIImage imageNamed:[listManager.myLists[indexPath.row-1] valueForKey:keyDetailImage]];
    cell.label.text = [listManager.myLists[indexPath.row-1] valueForKey:keyName];
    cell.imageBadge.hidden = !self.editing;
    NSLog(@"selected is %d",cell.selected);
    if ( cell.selected )
    {
        cell.imageBadge.image = self.badgeSelected;
    }
    else
    {
        cell.imageBadge.image = self.badgeUnselected;
    }
}
return cell;
}

1 个答案:

答案 0 :(得分:1)

哇!cell内检查selected的{​​{1}}州是否可以工作。

由于您已经创建了自定义单元格子类cellForAtIndexPath:,因此您需要覆盖其SMListCollectionViewCell setter&切换要在单元格中显示的图像。

由于selected中已显示imageBadge属性,因此只有SMListCollectionViewCell.h的快速摘要如下所示:

.m

这将根据细胞选择状态处理图像切换。

此外,// SMListCollectionViewCell.m #import "SMListCollectionViewCell.h" @implementation SMListCollectionViewCell ... - (void)setSelected:(BOOL)selected{ [super setSelected:selected]; if (selected){ cell.imageBadge.image = self.badgeSelected; } else { cell.imageBadge.image = self.badgeUnselected; } } @end 现在将变身为:

cellForItemAtIndexPath: