gpt4 book ai didi

ios - Table View加载时接收数据

转载 作者:行者123 更新时间:2023-11-30 13:04:54 24 4
gpt4 key购买 nike

我正在制作一个简单的“点赞”按钮。当一个人按下“like”按钮时,代码会检查用户之前是否已经按过“like”。如果没有,它会向 Firebase 发送数据,表示用户喜欢这篇文章,然后将按钮的 textColor 更改为蓝色。

我的问题是,当用户关闭应用程序并再次打开它时,没有一个按钮是蓝色的。尽管用户喜欢了几个帖子。我猜想,我需要某种代码来检查用户是否已经喜欢该帖子,并在加载 UITableViewController 时将 textColor 更改为蓝色?

我尝试在我的代码中执行此操作,但出现错误。那么有人能告诉我如何从这里出发吗?我的“赞”按钮代码:

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)
}



}

}

最佳答案

Id 创建一个适合您的数据的结构。然后,我将从本地数据库中提取的数据保存在数组中。

在构建表(即 cellForRowAtIndexPath)时,根据数组中的值检查 indexPath.row 以查看您是否喜欢它。如果您喜欢它,即 arrayOfUsers[indexPath.row].contains("myUserID"),则调整按钮以显示已经喜欢的内容,并为计数器分配一个数字。否则,什么也不做。

另外 - 保持查询更新而不是执行observeSingleEventOfType(...)不会有什么坏处,我这么说的原因是你可以告诉查询保留数据,这样即使用户关闭应用程序也是如此。在 iPad 上启动您的应用程序,然后返回手机,iPhone 将通过 firebase 进行更新。

因此,总结一下最后一点,我建议不要将查询更改为观察者一次,并在删除/添加子项时让它调用特定函数

关于ios - Table View加载时接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39510155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com