我正在尝试将最喜欢和最喜欢的功能实现到我的单元中。在这里,最初,我在集合视图中显示单元按钮图标favorite (gray)
,它的平均收藏夹不正确,但是单击该按钮后,它将显示绿色,它的平均收藏夹。从JSON
我得到的响应是哪些单元格已被收藏,而其他单元格则不被收藏。它的工作正常,但是当我单击启用了“收藏夹”的绿色按钮时,它并没有通过单击更改为灰色,它的工作原理是双击,但是每次我呼叫JSON
时都单击,因此,按JSON
单击它将再次添加收藏夹。
在这里,在我的代码下方-
var checked = false
@IBAction func favoritesTapped(_ sender: Any) {
if checked {
favbutton.setImage(UIImage(named: "item_grayfav.png"), for: .normal)
checked = false
delegate?.unfavoriteButtonPressed(cell: self)
} else {
favbutton.setImage(UIImage(named: "item_greenfav.png"), for: .normal)
checked = true
delegate?.favoriteButtonPressed(cell: self)
}
}
上面的代码我用于按钮单击以更改图像,并且最初我还修复了灰色
3rd
进入项目的收藏夹视图单元格
if indexPath.row < cfavoritesIDData.count {
if let i = cfavoritesIDData[indexPath.item] {
cell.favbutton.setImage(UIImage(named: "item_greenfav.png"), for: .normal)
}
else {
print("id is nil")
cell.favbutton.setImage(UIImage(named: "item_grayfav.png"), for: .normal)
}
}
问题:如果我单击启用了JSON的绿色按钮(收藏夹),它的调用效果会很差,但是3次单击按钮后,其图标不会变成绿色(仅更改为灰色)。
最佳答案
您需要将单元格模型存储在View Controller
中,该单元格不应具有checked
布尔值,在cellForRow:
中配置单元格时,无论是否经过检查,都应告诉它。
按下按钮时,您应该具有delegate
回调或closure
来告诉View Controller
IndexPath
'x'处的单元格已按下其喜欢的按钮,并检查模型是否响应是否选中,然后再次重新配置单元。
关于ios - Swift根据JSON值处理收藏夹和收藏夹按钮,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51743058/