我有一个表格视图,单元格中填充了来自Firebase的数据。在每个单元格中都有一个类似按钮,当我喜欢特定单元格中的按钮时,它会捕获该单元格的ID并在Firebase中创建一个节点,让我知道该按钮被点击(喜欢)。点击按钮之前,它是白色的,点击它后变成红色。然后,如果再次点击(未点击),它变成白色。将索引路径发送到Firebase(如按钮)
@IBAction func LikeClicked(_ sender: UIButton) -> Void {
let LikedRef = FIRDatabase.database().reference().child("Likes").child((self.loggedInUser?.uid)!)
let indexPath = self.selectedIndex
let post = self.posts![(indexPath?.row)!] as! [String: AnyObject]
self.key = post["postID"] as? String
let cell = TableView.cellForRow(at: indexPath!) as! ProfileTableViewCell
if cell.Like.currentImage == #imageLiteral(resourceName: "icons8-Hearts Filled-50 (2)"){
cell.Like.setImage(#imageLiteral(resourceName: "icons8-Heart-50"), for: .normal)
// cell.RedLike.isHidden = true
FIRDatabase.database().reference().child("Likes").child((self.loggedInUser?.uid)!).child(self.key!).removeValue(completionBlock: { (error, ref) in
if error != nil {
print("error \(error)")
}else{
}})
} else{
LikedRef.observeSingleEvent(of: .value, with: { (snapshot:FIRDataSnapshot) in
if let postsDictionary = snapshot .value as? [String: AnyObject] {
var LikeStatus = postsDictionary[self.key!] as? String ?? ""
if self.key == LikeStatus
{
// cell.Like.isHidden = true
cell.Like.setImage(#imageLiteral(resourceName: "icons8-Hearts Filled-50 (2)"), for: .normal)
}
}})
LikedRef.updateChildValues([self.key!: self.key!])
}
}
cell.Like.addTarget(self, action: #selector(LikeClicked), for: UIControlEvents.touchUpInside)
cell.Like.tag = indexPath.row
print(indexPath.row)
cell.Like.isUserInteractionEnabled = true
我的问题是当我喜欢特定单元格上的一个按钮时,每个单元格中的所有按钮都变成红色。但我只想要点击的单元格变成红色,当我离开应用程序并返回时,所有按钮都变回白色。无论用户是否退出应用程序,我都希望登录用户喜欢的任何按钮保持红色。
这哪里是IBAction为''LikeClicked位于?在你的viewController或在你的tableViewCell类? – Glenn
@Glenn它位于视图控制器 – juelizabeth