知道为啥这个函数正在写入/更新表中的第一个单元格而不是 PFQueryTableViewController 中选定的单元格吗?
Posted
技术标签:
【中文标题】知道为啥这个函数正在写入/更新表中的第一个单元格而不是 PFQueryTableViewController 中选定的单元格吗?【英文标题】:Any idea why this func is writing/updating the first cell in table and not the selected one in PFQueryTableViewController?知道为什么这个函数正在写入/更新表中的第一个单元格而不是 PFQueryTableViewController 中选定的单元格吗? 【发布时间】:2015-12-10 16:27:30 【问题描述】:在我的应用中,用户可以发布到 Parse 后端,他们的帖子会显示在时间线中 (PFQueryTableViewController
)。此表格视图中的每个单元格都有一个按钮,用户可以按下该按钮来“喜欢”帖子。直到昨天我还有喜欢排序的功能,但今天突然它不再工作了。
现在,当用户喜欢帖子时,它会做很多事情:将用户的 objectId 添加到帖子 PFObject
("likedBy") 中的数组中,并将帖子 PFObject
添加到 User 类中的关系中(“喜欢的帖子”)。
但现在似乎正在发生的事情是它可以工作,但存在以下问题:
它通常会喜欢表格视图顶部的任何帖子/单元格,而不是用户实际点击的那个——例如点击表格中第 4 个帖子上的点赞按钮,它会改为喜欢第 1 个帖子 它可能喜欢预期的帖子,但之后用户无法喜欢其他任何内容 或者它可能根本不喜欢任何东西这是我正在使用的代码,我哪里出错了?昨天运行良好,我认为这不是 Parse 后端问题,因为我在一小时前将应用设置为使用全新的后端,但问题仍然存在。
func likePost(sender: UIButton)
let hitPoint = sender.convertPoint(CGPointZero, toView: self.tableView)
let hitIndex = tableView.indexPathForRowAtPoint(hitPoint)
let object = objectAtIndexPath(hitIndex)
let userId = PFUser.currentUser()?.objectId
let relayedResponses = (PFUser.currentUser()?.relationForKey("likedPosts"))! as PFRelation
likedPosts.addObject(object!)
PFUser.currentUser()?.saveInBackground()
object?.addUniqueObject(userId!, forKey: "likedBy")
object?.saveInBackground()
self.tableView.reloadData()
在我的cellForRowAtIndexPath
我有:
cell.likeButton.tag = indexPath.row
cell.likeButton.addTarget(self, action: "likePost:", forControlEvents: UIControlEvents.TouchUpInside)
我会很感激任何帮助,因为这让我发疯了!!我就是看不出问题出在哪里!
【问题讨论】:
【参考方案1】:您将CGPointZero
转换为tableView。它实际上是CGPoint(0,0)
,并且总是返回0,0
,这是表格视图的第一行。
【讨论】:
谢谢!你知道我将如何确定它只喜欢我点击的帖子/行而不是第一行吗? 使用按钮的tag
像let index = sender.tag
然后let object = objectAtIndexPath(index)
啊,这现在更有意义了...但是现在我在 objectAtIndexPath(index) 行中有一个错误,说“无法将 'Int' 类型的值转换为预期的参数类型 'NSIndexPath?'
所以改成那个。 let index = NSIndexPath(forItem: sender.tag, inSection: 0)
完美!奇怪的是,我尝试了之前的代码并且它再次工作,但我现在选择了你的修订,因为我知道它们确实有效,我现在明白它们为什么有效。谢谢!以上是关于知道为啥这个函数正在写入/更新表中的第一个单元格而不是 PFQueryTableViewController 中选定的单元格吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何将单元格而不是单元格的值传递给 LibreOffice 函数?
如何在 TAP 上编辑 tableview 单元格而不是滑动 - Swift