1

我从 UICollectionViewCell 覆盖 (BOOL)isSelected {} 以更改选择时的单元格外观。如果我单击一个单元格,这确实可以按预期工作。但是如果我手动设置选择,则永远不会调用 isSelected 方法。有没有优雅的方法来解决这个问题?

我的自定义单元格中的重写方法:

 (BOOL)isSelected {
    if ([super isSelected]) {
        self.contentView.alpha = 0.2;
        self.contentView.backgroundColor = [UIColor greenColor];
        return YES;
    } else {
        self.contentView.alpha = 1.0;
        self.contentView.backgroundColor = [UIColor clearColor];
        return NO;
    }
}

我想在我的控制器中手动选择一个单元格,如下所示:

[self.collectionView selectItemAtIndexPath:indexPath animated:NO scrollPosition:UICollectionViewScrollPositionNone];
4

1 回答 1

1

我的错误是覆盖了方法 isSelected。我需要覆盖 setter 方法 setSelected 一切都按预期工作。

- (void)setSelected:(BOOL)selected {
[super setSelected:selected];
if (selected) {
    self.contentView.alpha = 0.2;
    self.contentView.backgroundColor = [UIColor greenColor];
} else {
    self.contentView.alpha = 1.0;
    self.contentView.backgroundColor = [UIColor clearColor];
}

}

于 2012-12-18T11:06:45.467 回答