2016-03-08 2 views
0

Краткий обзор того, что я пытаюсь сделать. Я делаю приложение, чтобы показать свои обзоры фильмов. У меня есть PFQueryTableviewController, из которых я использую пользовательскую ячейку. В этой таблице показаны фильмы, которые поступают из моей базы данных Parse. В каждой ячейке есть 3 UIButtons, из которых я хочу, чтобы пользователь использовал для голосования за фильм (happyVote, OkVote, sadVote). В верхней части каждой кнопки находится UILabel, который просто отображает счетчик.Кнопки голосования с парсером в Swift

Как я хочу, чтобы работать

  1. Когда пользователь нажимает на одну из кнопок, увеличивается на 1. проголосуй
  2. Когда пользователь снова нажимает ту же кнопку, голосование уменьшается на 1 Или
  3. Если пользователь нажал другую кнопку, голосование уменьшается на первой кнопке и увеличивается на нажатой кнопке.
  4. Пользователь может голосовать только на одной из кнопок.
  5. Голосование показано UILabel, показывающим счетчик, и при изменении изображения кнопки.

Ниже визуально:

enter image description here

Это то, что я добавил в Parse:

enter image description here

До сих пор я добавил код для увеличения количества голосов в Парсе, в моем 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)" 

Я искал какое-то время для некоторых примеров того, как вычислить остальное, но не могу найти что-нибудь, и я на самом деле пытаясь понять, как дальше выходить.

Любая помощь будет принята с благодарностью, и, пожалуйста, дайте мне знать, если вам нужно/хотите больше видеть мой код. Благодаря

+0

Для того, чтобы эта функция работала, мне нужно, чтобы пользователь вошел в систему, так как если мы обновим приложение, пользователь увидит, что он не понравился ему, и если он снова будет снова, счет будет увеличиваться. –

ответ

0

В вашем методе upVoteButton(), вы можете добавить две другие кнопки и установить их button.enabled = false внутри, если заявление, как:

if downVoteButton.enabled == true { 
    downVoteButton.enabled = false 
} else if downVoteButton.enabled == false { 
    downVoteButton.enabled = True 
} 

И сделать то же самое с middleVoteButton в antoher, если заявление или же, независимо от плавает ваша лодка, а также в других методах кнопок с помощью соответствующих кнопок. Это помогает отключать кнопки при нажатии, а затем включает их при повторном нажатии.

И для изменения изображения вы можете следовать this.

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