William Falcon
William Falcon

Reputation: 9813

tap collection view cell change image

I have a collection cell and want to change the image when touched, and back again, how should I structure it?

After highlighting (works well below), I want it to go back to the old image when touched again. Thank you. At viewWillDissapear I want to know which cells are highlighted.

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{

    UIImage *backGround =[UIImage imageNamed:@"IconHighlight.png"];
    UIImageView *av = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, backGround.size.width, backGround.size.height)];
    av.backgroundColor = [UIColor clearColor];
    av.opaque = NO;
    av.image = backGround;

    [[collectionView cellForItemAtIndexPath:indexPath] setBackgroundView:av];
    [[collectionView cellForItemAtIndexPath:indexPath].backgroundView setTag:1];
}

Upvotes: 2

Views: 8214

Answers (1)

LE SANG
LE SANG

Reputation: 11005

Create CustomCell - subclass of UICollectionViewCell. Customize init to the following

//CustomCell.m
- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        backgroundImageView.image = [UIImage imageNamed:@"background.png"];
        highlightImageView.image = [UIImage imageNamed:@"highlight.png"];
        self.backgroundView = backgroundImageView;
        _isHighlight = -1;
    }
    return self;
}

-(void)tapToChangeBackGround{

    self.isHighlight = -self.isHighlight;

    if (self.isHighlight==1) {
        self.backgroundView = highlightImageView;
    }
    else{
        self.backgroundView = backgroundImageView;
    }
}

//didSelect
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
    CustomCell *cell = (CustomCell *)[collectionView cellForItemAtIndexPath:indexPath];
    [cell tapToChangeBackGround];
}

Upvotes: 4

Related Questions