我有一个tableView和我的tableViewCell有一个isLiked
变量和一个likeButton
。我想将我的likeButton's
tintColor设置为isLiked
的状态。我这样做的方式是从Firebase中检索用户喜欢的帖子列表,然后将其传递到tableView中。如果postID符合列表,我想将isLiked变量设置为true。Swift:设置TableViewCell的变量
但是,尽管在cellForRow中设置了这个逻辑,tableViewCell中的isLiked变量也没有相应地设置。我怎样才能相应地设置它?我的代码如下:
// in TableViewController
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell
let post: FIRDataSnapshot = self.posts[indexPath.row]
let postValues = post.value as! [String: AnyObject]
let postID = postValues["postID"] as! String
for likedPosts in usersLikedPostsList {
if likedPosts == postID {
DispatchQueue.main.async {
cell.isLiked = true
}
} else {
cell.isLiked = false
}
}
return cell
}
// in TableViewCell
class TableViewCell: UITableViewCell {
var isLiked: Bool?
@IBOutlet weak var likeButton: UIButton!
override func awakeFromNib() {
super.awakeFromNib()
print(isLiked)
if let _ = isLiked {
likeButton.tintColor = .red
} else {
likeButton.tintColor = .darkGray
}
}
}
从打印语句,isLiked
变量是零加载表时。我试图用self.tableView.reloadData()
,但它也没有相应地设置它。
请注意,我想操纵TableViewCell中的isLiked
状态,因为我想添加代码以在TableViewCell中切换其状态,以便用户可以喜欢和不同于帖子,并相应地对Firebase执行更新。
简单而优雅,谢谢! – Koh