2015-11-01 4 views
0

Я пытаюсь реализовать подобную функцию кнопки в своем приложении, аналогичную facebook или instagram, через синтаксический анализ. Я попытался использовать этот код ниже, и он работает. Когда пользователь нажимает кнопку на объекте (или в моих сообщениях), то подобное увеличивается на 1 пункт. Однако, когда пользователь выходит из приложения и запускает его, он может снова походить на тот же объект, что означает, что они могут нравиться столько раз, сколько захотят. Нужно ли мне что-то редактировать в этом коде или попробовать другой метод?Как функция кнопки, не работающая с помощью синтаксиса

@IBAction func likeButton(sender: UIButton) { 
    sender.enabled = false 
    sender.userInteractionEnabled = false 
    sender.alpha = 0.5 

    //get the point in the table view that corresponds to the button that was pressed 
    //in my case these were a bunch of cells each with their own like button 
    let hitPoint = sender.convertPoint(CGPointZero, toView: self.tableView) 
    let hitIndex = self.tableView.indexPathForRowAtPoint(hitPoint) 
    let object = objectAtIndexPath(hitIndex) 

    //this is where I incremented the key for the object 
    object!.incrementKey("count") 
    object!.saveInBackground() 

    self.tableView.reloadData() 
    NSLog("Top Index Path \(hitIndex?.row)") 
} 
+2

может быть, вы можете попробовать использовать массив или отношение, чтобы отслеживать все посты, которые имеют каждый пользователь любит, а затем при создании ячейки post проверяет, содержит ли массив или отношение уже этот пост. Если это произойдет, не позволяйте пользователю снова походить на него. – Acoop

+0

Это что-то, что я делаю на парсе? – Cooni

ответ

0

Вот способ, в котором я хотел бы подойти к решению проблемы:

Прежде всего, я бы отключить кнопку в свою собственную функцию следующим образом:

func disableButton(button: UIButton){ 
    button.enabled = false 
    button.userInteractionEnabled = false 
    button.alpha = 0.5 
} 

(И когда пользователь нажатие кнопки аналогично отключается так:

@IBAction func likeButton(sender: UIButton) { 
    disableButton(sender) 

    //get the point in the table view that corresponds to the button that was pressed 
    //in my case these were a bunch of cells each with their own like button 
    let hitPoint = sender.convertPoint(CGPointZero, toView: self.tableView) 
    let hitIndex = self.tableView.indexPathForRowAtPoint(hitPoint) 
    let object = objectAtIndexPath(hitIndex) 

    //this is where I incremented the key for the object 
    object!.incrementKey("count") 
    object!.saveInBackground() 

    self.tableView.reloadData() 
    NSLog("Top Index Path \(hitIndex?.row)") 
} 

Тогда я бы сделал атрибут пользователей ir понравились сообщения, которые представляют собой массив строк objectIds этих сообщений. (Так как пользователи, вероятно, в конечном итоге будут любить многие сообщения, вы действительно должны использовать отношения, но массивы легче понять. Документация для отношений между PFObjects равна here.) Затем при создании ячейки для каждого сообщения, где cell - это ячейка, которую вы создание, post является текущим постом в списке и cell.likeButton кнопка, как из клетки:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ 
    let cell = YourCell() 
    let post = posts[indexPath.row] 
    if (PFUser.currentUser!["likedPosts"] as! [String]).contains(post.objectId){ 
     cell.disableButton(cell.likeButton) 
    } 
    //Setup rest of cell 
+0

Нет. Это обычная функция. – Acoop

+0

Вы также создали выход в ячейку для cell.disableButton? – Cooni

+0

Если вы добавите disableButton в подклассу ячеек, то точка будет получать доступ к ней. – Acoop