我正在尝试将最喜欢和最喜欢的功能实现到我的单元中。在这里,最初,我在集合视图中显示单元按钮图标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/

10-09 02:22