我有一个自定义的UICollectionViewCell,它包含一个带有图像集的UIButton。这个底部的目的是允许通过应用程序购物的用户将商品添加到他们最喜欢的商品列表中。
我有两个版本的图像。一个是默认的灰色心脏,另一个是黑色心脏。当用户点击将项目添加到他们的收藏夹时,会触发此方法:
敲击心脏时发射的方法:
- (void)addToFavouritesButtonTapped
{
NSLog(@"add to favourites button tapped");
}
在UICollectionView的cellForItemAtIndexPath方法中,我有以下内容:
_addToFavouritesButton = [cell addFavouriteButton];
[_addToFavouritesButton addTarget:_thisController action:@selector(addToFavouritesButtonTapped) forControlEvents:UIControlEventTouchUpInside];
点击心形按钮将项目保存到收藏夹后,我希望图像更改为突出显示的黑色心形。
我怎样才能做到这一点?
将另一个图像设置为UIControlStateSelected
的图像,然后当点击按钮时将按钮设置为selected
= YES
,这将更改图像。
_addToFavouritesButton = [cell addFavouriteButton];
[_addToFavouritesButton addTarget:_thisController action:@selector(addToFavouritesButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
[_addToFavouritesButton setImage:blackHeart forState:UIControlStateSelected];
- (void)addToFavouritesButtonTapped:(UIButton *)sender
{
NSLog(@"add to favourites button tapped");
sender.selected = YES;
}
您可以使用按钮状态来显示不同的图像。查看UIButton的文档,有一种方法setImage:forState:
可以用于设置图像的正常状态、高亮显示状态和选定状态。您甚至可以在界面生成器中执行此操作。
顺便说一句,如果你想在按下按钮后用它做其他事情,你应该做以下事情:
附加:到选择器
[_addToFavouritesButton addTarget:_thisController action:@selector(addToFavouritesButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
在方法中接收UIButton
- (void)addToFavouritesButtonTapped:(UIButton *)sender
然后,您可以用