我在收藏夹视图中有一个“收藏夹”按钮。
选择该按钮时显示一幅图像,再次单击时显示另一幅图像。
我想保持图像状态,即使它转到另一个视图控制器并返回。
下面的代码写在集合视图的cellforitem内部
cell.favBtn.tag = indexPath.row
let value = UserDefaults.standard.bool(forKey: "isSaved")
print("value is",value)
cell.favBtn.isSelected = value
cell.favBtn.isSelected = false
cell.favBtn.addTarget(self, action: #selector(favBtnAction), for: .touchUpInside)
favBtnAction函数代码如下:
@IBAction func favBtnAction(_ sender: UIButton) {
if objcell.favBtn.isSelected {
// set selected
sender.setImage(image1, for: UIControl.State.normal)
objcell.favBtn.isSelected = false
UserDefaults.standard.set(true, forKey: "isSaved")
UserDefaults.standard.synchronize()
} else {
// set deselected
sender.setImage(image2, for: UIControl.State.normal)
objcell.favBtn.isSelected = true
UserDefaults.standard.set(false, forKey: "isSaved")
UserDefaults.standard.synchronize()
}
}
答案 0 :(得分:0)
struct Record{
let id:Int
//your other data
var isFavourite:Bool
mutating func setIsFavourite(isFavourite:Bool){
self.isFavourite = isFavourite
}
}
let items:[Record] = [] //Your collection view data list is here
将商品ID分配到cellForItemAt中的“收藏夹”按钮标签
@IBAction func favBtnAction(_ sender: UIButton) {
if sender.isSelected{//<- this is how you identify the it is selected or deselected.I add dummy logic here
items[sender.tag].setIsFavourite(isFavourite: true)
}else{
items[sender.tag].setIsFavourite(isFavourite: false)
}
}
现在,您可以使用isFavorite值在 cellForItemAt
上显示不同的图像