我正在做一个简单的按钮。当一个人按下相似按钮时,代码正在检查用户是否已经按下之前的。如果没有,它会向Firebase发送数据,说用户喜欢这篇文章,然后将按钮的textColor
更改为蓝色。
我的问题是,当用户关闭应用并再次打开它时,没有一个按钮是蓝色的。即使用户喜欢几个帖子。我需要某种代码,可以检查用户是否已经喜欢帖子,并在加载textColor
时将UITableViewController
更改为蓝色,我猜?
我试图在我的代码中执行此操作,但它会出错。所以有人能告诉我怎么离开这里吗?我喜欢按钮代码:
func checkClickOnLikeButton() {
let dataPathen = self.pathDB
// print(dataPathen)
if let user = FIRAuth.auth()?.currentUser {
let userId = user.uid
FIRDatabase.database().reference().child("feed-items").child(dataPathen).child("likesForPost").observeSingleEventOfType(.Value, withBlock: { (snapshot) in
// Get user value
self.gottenUserId = snapshot.value![userId] as? Bool
// print(self.gottenUserId)
if self.gottenUserId == true {
print("Der er trykket high five før")
} else {
print("Der er IKKE trykket like før")
let quoteString = [userId: true]
FIRDatabase.database().reference().child("feed-items").child(dataPathen).child("likesForPost").updateChildValues(quoteString)
let blueButtonColor = UIColor(red: 0/255, green: 122/255, blue: 255/255, alpha: 1.0)
self.highFiveButton.setTitleColor(blueButtonColor, forState: UIControlState.Normal)
}
// ...
}) { (error) in
print(error.localizedDescription)
}
}
}
答案 0 :(得分:0)
我创建一个适合您数据的结构。然后,我会在数组中本地保存您从数据库中提取的数据。
在构建表格时,即cellForRowAtIndexPath,检查indexPath.row对照数组中的值,看看你是否喜欢它。 如果你喜欢它,即arrayOfUsers [indexPath.row] .contains(“myUserID”),那么调整你的按钮以显示已经喜欢的,并为计数器分配一个数字。否则,什么也不做。
此外 - 保持查询更新而不是执行observeSingleEventOfType(...)也没有什么坏处。我说这是因为您可以告诉查询保持数据,即使用户关闭应用程序也是如此。在iPad上启动您的应用程序,然后返回到手机,iPhone将通过firebase更新。
因此,总结最后一点,我建议将查询更改为观察者一次,并在删除/添加子项时调用特定函数