【发布时间】:2018-01-01 17:03:38
【问题描述】:
在 Swift 3 中,我通过 json 从 api 获取数据并检查我的自定义单元格中是否喜欢帖子:
let cell = self.tableView.dequeueReusableCell(withIdentifier: "Feedcell", for: indexPath) as! FruitTableViewCell
//getting the hero for the specified position
let hero: List_Feed
hero = heroes[indexPath.row]
if(hero.mylike=="liked"){
cell.btnLike.setImage(UIImage(named: "liked"), for: .normal)
cell.btnLike.addTarget(self, action:#selector(handleDislikes(sender:)), for: .touchUpInside)
}else{
cell.btnLike.setImage(UIImage(named: "unliked"), for: .normal)
cell.btnLike.addTarget(self, action:#selector(handleLikes(sender:)), for: .touchUpInside)
}
这里是 handleDislikes 和 handleLikes 函数:
func handleLikes(sender: AnyObject) {
let likeid = sender.tag / 100
let row = sender.tag % 100
print(likeid)
print(row)
let m1 = sender.titleLabel??.text
let m2 = Int(m1!)
let m3 = m2!+1
let m4 = String(m3)
sender.setTitle(m4, for: .normal)
sender.setImage(UIImage(named: "liked"), for: .normal)
sender.removeTarget(nil, action: nil, for: .allEvents)
sender.addTarget(self, action:#selector(handleDislikes(sender:)), for: .touchUpInside)
}
func handleDislikes(sender: AnyObject) {
let likeid = sender.tag / 100
let row = sender.tag % 100
print(likeid)
print(row)
let m1 = sender.titleLabel??.text
let m2 = Int(m1!)
let m3 = m2!-1
let m4 = String(m3)
sender.setTitle(m4, for: .normal)
sender.setImage(UIImage(named: "unliked"), for: .normal)
sender.removeTarget(nil, action: nil, for: .allEvents)
sender.addTarget(self, action:#selector(handleLikes(sender:)), for: .touchUpInside)
}
因此,当我点击喜欢按钮时,它“喜欢它”并且按钮的值变为 value+1。然后,当我向下滚动并再次向上滚动到这个喜欢的帖子(自定义单元格)时,它显示 按钮未按下。为什么会这样,我的朋友们?
【问题讨论】:
-
您的
handleLikes和handleDislikes方法没有任何用处。他们需要更新您的heroes数组中的数据。 -
@mr-jo : 您的 handleLikes 和 handleDislikes 只是暂时反映更改,以便保持更改,您应该修改相应英雄对象的 myLike 属性
-
@rmaddy 谢谢你的回复!现在我知道该怎么做了。请写下您的评论作为答案。