【发布时间】:2015-05-19 03:45:23
【问题描述】:
我正在尝试将 aUIButton 添加到 aUICollectionViewCell。该按钮的主要目的是让用户选择他们最喜欢的。
当他们点击UIButton 时,UIButton 将显示一个发光的星形图像,表明该项目已被选为收藏夹。
再次点击UIButton,按钮返回显示原图,带空星,表示取消选择。
我的实现方式如下:
1 - 在情节提要中,将 UIButton 放入UICollectionViewCell,按住 ctrl 并拖动按钮到单元格的 .h 文件以设置名为
-(IBAction)favoriteBtnClick:(id)sender;
2 - 在单元格的 .m 文件中,按如下方式编辑操作:
-(IBAction)favoriteBtnClick:(id)sender {
if ([self.favoriteChecked isEqualToString:@"NO"]) {
UIImage *image = [UIImage imageNamed:@"FavoriteSelected.PNG"];
[sender setBackgroundImage:image forState:UIControlStateNormal];
self.favoriteChecked = @"YES";
} else if ([self.favoriteChecked isEqualToString:@"YES"]) {
UIImage *image = [UIImage imageNamed:@"FavoriteBlank.PNG"];
[sender setBackgroundImage:image forState:UIControlStateNormal];
}
}
但是,当我尝试运行UICollectionView 时,当我单击一个单元格上的按钮时,发生了“奇怪”的行为:
1 - 向下滚动列表后,单击一个单元格可将一个按钮变为最喜欢的发光星星,下面一些其他单元格上的按钮也会变为选中状态。
2 - 切换仅在一个周期内起作用。完成第一轮选择和取消选择后,进一步点击不再有反应。
谁能帮我理解这个问题的原因,并可能给我一些关于如何解决它的提示?
谢谢!
问候, 保罗
【问题讨论】:
-
这是由于单元重用而发生的。可以显示
cellForItemAtIndexPath方法代码吗? -
非常感谢大家。刚刚解决了这个问题。实际上,我从这里的所有建议中得到了答案。首先,使用convertPoint to View方法识别collectionView上cell的indexPath。然后更新数据模型对象中的收藏状态。最后要求collectionView重新加载数据。问题解决了!很酷!
标签: ios objective-c uiimageview uibutton uicollectionviewcell