我有UITableViewCells
与社交网络应用的标签相似/不同。标签具有UITapGestureRecognizer
方法,可以执行Like和不同功能的操作。虽然它在应用程序中表现良好。如果Firebase数据库中的任何更改未通知应用程序。这是cellForRowAtIndexPath
的片段:
if (cell.likeLabel.text == "Like") {
let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(FeedTableViewController.likeTapped))
cell.likeLabel.addGestureRecognizer(gestureRecognizer)
}
else if (cell.likeLabel.text == "Unlike") {
let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(FeedTableViewController.unlikeTapped))
cell.likeLabel.addGestureRecognizer(gestureRecognizer)
}
我希望它能够根据喜欢和不喜欢来增加和减少数据库中喜欢的数量。当应用程序从数据库加载JSON时,它有特定数量的喜欢显示(假设5),但是一旦加载,我更改数据库中的数字(可能是10),当点击类似标签时,它会增加到6并在不受欢迎时递减到5,而它应该增加到11并递减到9.这是UITabGestureRecognizer
方法之一的片段:
func likeTapped(sender: UITapGestureRecognizer){
// Get references
guard let label = sender.view as? UILabel else { print("Error not a label"); return }
let position = sender.locationInView(self.tableView)
guard let indexPath = self.tableView.indexPathForRowAtPoint(position) else { print("Error label not in tableView"); return }
// Notify TableView of pending updates
self.tableView.beginUpdates()
defer { self.tableView.endUpdates() }
// Reference to numberOfLikes
var numberOfLikes = self.tableViewModel[indexPath.row].numberOfLikes
numberOfLikes += 1
self.tableViewModel[indexPath.row].numberOfLikes = numberOfLikes
// Update Firebase
}