如何在点击时更改作为自定义 UICollectionViewCell 属性的 UIButton 的 UIImage?

Posted

技术标签:

【中文标题】如何在点击时更改作为自定义 UICollectionViewCell 属性的 UIButton 的 UIImage?【英文标题】:How do I change the UIImage of a UIButton that is a property of a custom UICollectionViewCell upon tap? 【发布时间】:2014-04-17 17:19:24 【问题描述】:

我有一个自定义 UICollectionViewCell,它包含一个带有图像集的 UIButton。此底部的目的是允许通过该应用购物的用户将商品添加到他们最喜欢的商品列表中。

我有 2 个版本的图像。一个是默认的灰色心形,另一个是黑色心形。当用户点击以将项目添加到他们的收藏夹时,会触发此方法:

方法一触即发:

- (void)addToFavouritesButtonTapped

    NSLog(@"add to favourites button tapped");

在我的 UICollectionView 的 cellForItemAtIndexPath 方法中,我有这个:

    _addToFavouritesButton = [cell addFavouriteButton];
   [_addToFavouritesButton addTarget:_thisController action:@selector(addToFavouritesButtonTapped) forControlEvents:UIControlEventTouchUpInside];

点击心形将项目保存到收藏夹后,我希望图像更改为我突出显示的版本,即黑色心形。

我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

将另一张图片设置为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;

【讨论】:

如何跟踪选定的按钮?每次我滚动它时,带有新更新心脏的单元格不是我最初修改的那个。 您可能想要this 之类的东西。并且您需要针对收藏的商品进行某种存储,您可以在 cellForItemAtIndexPath 中查询这些商品【参考方案2】:

您可以使用按钮状态来显示不同的图像。查看 UIButton 的文档,有一个方法 setImage:forState: 可用于将图像设置为正常状态、突出显示状态、选中状态。 您甚至可以在 Interface Builder 中完成。

附带说明,如果您想在按下按钮后对按钮执行其他操作,您应该执行以下操作:

将 : 附加到选择器

[_addToFavouritesButton addTarget:_thisController action:@selector(addToFavouritesButtonTapped:) forControlEvents:UIControlEventTouchUpInside];

在方法中接收UIButton

- (void)addToFavouritesButtonTapped:(UIButton *)sender

然后您可以在该方法中操作按钮

【讨论】:

以上是关于如何在点击时更改作为自定义 UICollectionViewCell 属性的 UIButton 的 UIImage?的主要内容,如果未能解决你的问题,请参考以下文章

点击时更改 UICollectionViewCell 上的 ImageView 图像

如何在点击时更改 UITableViewCell 的部分位置

如何将子视图添加到自定义 UICollectionViewCell

自定义菜单作为子视图

如何:使用条件自定义背景视图作为背景修饰符?

如何使用分页更改 tableview 自定义单元格中的 imageview 图像。