我有一個表格視圖,單元格中填充了來自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