我正在为我的项目在tableview
单元格中创建类似按钮。如果点击了按钮,则必须将色调颜色更改为红色。我正在使用Alamofire,如果用户喜欢它,则返回喜欢的饲料,并且在细胞中:
let likerHash = data[indexPath.row]["liker_hash"] as? String
if(likerHash == ""){
cell.likeButton.tintColor = UIColor.blackColor()
}else{
cell.likeButton.tintColor = UIColor.redColor()
}
将为Feed设置按钮的颜色。但是,如果我单击一个按钮,如果它不喜欢它会改变颜色,当我向下滚动并再次返回按钮颜色将再次更改为以前。 (如果在加载数据时它不受欢迎,当我向下滚动时它会保持颜色。)我试图改变liker_hash
的值,但它给了我一个错误:mutating method sent to immutable object
。我想改变价值,如:
self.data[sender.tag]["liker_hash"] = ""
我的data
来自[NSMutableDictionary]()
类型。知道我怎么能用迅捷的语言来做呢?
答案 0 :(得分:0)
使用dequeueReusableCellWithIdentifier的主要功能是每次返回时都会重新创建单元格。 根据您添加的代码,当用户点击类似按钮以保存下次tableView重新加载时已更改的单元格时,我不相信您正在编辑数据源。
我建议将所有单元格保存在一个数组中。假设你有5个单元格,创建一个保持当前状态的数组:
var cellArr = ["Black", "Black", "Black", "Black", "Black"]
然后,如果用户选择了类似按钮,请确保使用正确的颜色更新此数组。因此,如果我选择第二行,我会更新它:
var cellArr = ["Black", "Red", "Black", "Black", "Black"]
然后在你的cellForRowAtIndexPath函数中:
if cellArr[indexPath.row] == "Black"{
cell.likeButton.tintColor = UIColor.blackColor() }
else {
cell.likeButton.tintColor = UIColor.redColor()
}