2015-12-10 3 views
0

В моем приложении пользователи могут публиковать в Parse backend, а их сообщения отображаются на временной шкале (PFQueryTableViewController). Каждая ячейка в этом представлении таблицы имеет кнопку, которую пользователи могут нажать, чтобы «понравиться» сообщению. До вчерашнего дня мне нравилась функция сортировки, но сегодня она больше не работает.Любая идея, почему этот func пишет/обновляет первую ячейку в таблице, а не выбранную в PFQueryTableViewController?

Теперь, когда пользователь любит пост это целый ряд вещей: добавляет ObjectId пользователя в массив в посте PFObject («likedBy»), и добавляет пост PFObject к соотношению в классе User ("likedPosts «).

Но что, кажется, теперь происходят это работает, но со следующими проблемами:

  • это чаще всего понравится то, что пост/клетка находится в верхней части Tableview вместо одного пользователя действительно клики например on - eg нажмите на кнопку на 4-м столбе в таблице, и ему понравится первое сообщение вместо этого
  • ему может понравиться предполагаемый пост, но после этого пользователь не сможет ничего подобного после этого
  • или он может просто не понравиться никому в все

Вот код, который я использую, где я иду не так? Вчера он работал отлично, и я не думаю, что это проблема с Parse backend, потому что я установил приложение для работы с совершенно новым бэкэндом час назад, и проблема сохраняется.

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) 

Я признателен за любую помощь, поскольку это сводит меня с ума !! Я просто не вижу, где проблема!

ответ

0

Вы преобразовываете CGPointZero в таблицуView. Фактически это CGPoint(0,0) и всегда возвращает 0,0, который является первой строкой таблицы.

+0

Спасибо за это! Знаете ли вы, как я буду уверен, что ему нравится только пост/строка, которую я нажимаю, а не первую строку? –

+0

Используйте «тег» кнопки '' так, чтобы 'let index = sender.tag', а затем' let object = objectAtIndexPath (index) ' – njuri

+0

А теперь это имеет больше смысла ... Но теперь у меня есть ошибка в объектеAtIndexPath (index) line say 'не может преобразовать значение типа' Int 'в ожидаемый тип аргумента' NSIndexPath? ' –

 Смежные вопросы

  • Нет связанных вопросов^_^