0

私のアプリでは、ユーザーは Parse バックエンドに投稿でき、投稿はタイムライン ( PFQueryTableViewController) に表示されます。このテーブルビューの各セルには、ユーザーが投稿を「いいね」するために押すことができるボタンがあります。昨日までは並べ替える機能がありましたが、今日突然機能しなくなりました。

ユーザーが投稿にいいね! すると、多くの処理が行われます: ユーザーの objectId を投稿の配列にPFObject追加し ("likedBy")、投稿PFObjectを User クラスのリレーションに追加します ("likedPosts")。

しかし、現在起こっているように見えるのは、それが機能していることですが、次の問題があります。

  • ほとんどの場合、ユーザーが実際にクリックしたものではなく、テーブルビューの上部にある投稿/セルが好きになります。たとえば、テーブルの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)

これは私を狂わせているので、助けていただければ幸いです!! どこに問題があるのか​​ わかりません!

4

1 に答える 1

0

CGPointZero あなたはtableViewに変換します。それは実際CGPoint(0,0)には常に0,0テーブルビューの最初の行を返します。

于 2015-12-10T16:43:25.980 に答える