Краткий обзор того, что я пытаюсь сделать. Я делаю приложение, чтобы показать свои обзоры фильмов. У меня есть PFQueryTableviewController
, из которых я использую пользовательскую ячейку. В этой таблице показаны фильмы, которые поступают из моей базы данных Parse. В каждой ячейке есть 3 UIButtons, из которых я хочу, чтобы пользователь использовал для голосования за фильм (happyVote, OkVote, sadVote). В верхней части каждой кнопки находится UILabel, который просто отображает счетчик.Кнопки голосования с парсером в Swift
Как я хочу, чтобы работать
- Когда пользователь нажимает на одну из кнопок, увеличивается на 1. проголосуй
- Когда пользователь снова нажимает ту же кнопку, голосование уменьшается на 1 Или
- Если пользователь нажал другую кнопку, голосование уменьшается на первой кнопке и увеличивается на нажатой кнопке.
- Пользователь может голосовать только на одной из кнопок.
- Голосование показано UILabel, показывающим счетчик, и при изменении изображения кнопки.
Ниже визуально:
Это то, что я добавил в Parse:
До сих пор я добавил код для увеличения количества голосов в Парсе, в моем TableViewController.swift
:
@IBAction func upVoteButton(sender: AnyObject) {
let hitPoint = sender.convertPoint(CGPointZero, toView: self.tableView)
let hitIndex = self.tableView.indexPathForRowAtPoint(hitPoint)
let object = objectAtIndexPath(hitIndex)
object!.incrementKey("UpVoteCount")
object!.saveInBackground()
self.tableView.reloadData()
}
Этот вид работ, за исключением того, что пользователь может продолжать увеличивать количество, и они могут голосовать на всех трех кнопках. И при нажатии кнопки изображение не изменяется.
В моем cellForRowAtIndexPath
методе, я поставил:
let downVote = object!.valueForKey("DownVoteCount") as! Int
cell.downVoteLabel.text = "\(downVote)"
let middleVote = object!.valueForKey("MiddleVoteCount") as! Int
cell.middleVoteLabel.text = "\(middleVote)"
let upVote = object!.valueForKey("UpVoteCount") as! Int
cell.upVoteLabel.text = "\(upVote)"
Я искал какое-то время для некоторых примеров того, как вычислить остальное, но не могу найти что-нибудь, и я на самом деле пытаясь понять, как дальше выходить.
Любая помощь будет принята с благодарностью, и, пожалуйста, дайте мне знать, если вам нужно/хотите больше видеть мой код. Благодаря
Для того, чтобы эта функция работала, мне нужно, чтобы пользователь вошел в систему, так как если мы обновим приложение, пользователь увидит, что он не понравился ему, и если он снова будет снова, счет будет увеличиваться. –