我正试图使用Swift 2.0、Storyboard和Parse在我的iOS应用程序中实现一个类似/不同的功能,用户可以在其中喜欢/不同于其他用户或自己创建的帖子,就像Instagram、Facebook和其他社交应用程序一样。
我在情节提要中有一个连接到IBOutlet
(称为likeButton
)和IBAction
(称为likeButtonTapped
)的按钮。
我相信cellForRowAtIndexPath
方法也参与了正确实现此功能。
我认为我对下面代码的评论中需要发生的事情有正确的想法,然而,我不知道如何检查某个特定的帖子是否被点赞如何检查帖子是否被点赞以便切换likeButton
图像、增加/减少likeCount
以及添加/删除当前用户和用户喜欢的帖子之间的关系。
此外,对于标准的相似/不同功能,我是否采取了"正确"(传统)的方法?我很想听听你的反馈。感谢您的时间和帮助!
class TimelineFeedViewController: PFQueryTableViewController {
var userLike = PFUser.currentUser()?.relationForKey("likes")
@IBAction func likeButtonTapped(sender: UIButton) {
// The following code has errors - for example, `object` is an unresolved
// identifier (it's supposed to be a PFObject that holds a post at a specific
// indexPath)
// Also, I cant access the likeButton for some reason. Only when I do
// cell.likeButton in `cellForRowAtIndexPath`.
// If the button is liked already (it's filled)
// Toggle likeButton image to UNfilled version
// "if likeButton isLiked == true" below is pseudocode of what I am trying to do
if likeButton isLiked == true {
let image = UIImage(named: "likeButtonUnfilled")
cell.likeButton.setImage (image, forState: UIControlState)
// Decrement the likeCount
object!.decrementKey("count")
// Remove the relation bet user and post
self.userLike?.removeObject(object!)
} else {
// the button is NOT liked already (it's not filled)
// toggle the image to the filled version
let image = UIImage(named: "likeButton")
cell.likeButton.setImage (image, forState: UIControlState)
// Increment the likeCount
object!.incrementKey("count")
// Add the relation bet. user and post
self.userLike?.addObject(object!)
}
object!.saveIngBackground()
PFUser.currentUser()?.saveInBackground()
self.tableView.reloadData()
}
}
假设您有自定义的UITableViewCell类并从Parse中提取了数据,那么在您的UITableView数据源方法中
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("skillsCell", forIndexPath: indexPath) as! YOURTableViewCell
//Check If item is liked
if (isLiked) {
//Set image for like on button
}
else {
//Set image for unlike on button
}
cell.YourButton.tag = indexPath.row // This will assign tag to each button in tableView
return cell
}
在YourViewController中添加UIButton操作
@IBAction func testButtonAction(sender: UIButton) {
print(sender.tag)
let cell = testTableView.cellForRowAtIndexPath(NSIndexPath(forRow: sender.tag, inSection: 0)) as! TestTableViewCell
if cell.likeButton.titleLabel?.text == "Cell (sender.tag)" { //Your logic here. Check If button's image has "Liked Image than change Image to UnLiked Image"
cell.likeButton.text = "(sender.tag)"
}
else {
cell.likeButton.text = "Cell (sender.tag)"
}
}
这将在UITableView中实现Like/Like for按钮。还要确保相应地更新Parse中的类。