我正在尝试在我的应用上实施投票功能。我希望用户在按下按钮后只在我的应用上投票一次。用户在按下按钮后无法按下按钮,但是,当取消并重新加载应用程序时,用户仍然可以按下按钮并增加“计数”。我尝试集成禁用按钮功能,但仍然不限制用户投票(或按下按钮)。
我是否必须为saveInBackgroundWithBlock
创建一个if方法,还是还有其他可以阻止用户再次执行此操作的方法?
以下是操作的代码:
@IBAction func voteButton(sender: UIButton) {
disableButton(sender)
let hitPoint = sender.convertPoint(CGPointZero, toView: self.tableView)
let hitIndex = self.tableView.indexPathForRowAtPoint(hitPoint)
let object = objectAtIndexPath(hitIndex)
self.userVote?.addObject(object!)
polls.addObject(object!)
object!.incrementKey("voteUp")
object!.saveInBackground()
self.tableView.reloadData()
NSLog("Top Index Path \(hitIndex?.row)")
}
这是禁用按钮功能:
func disableButton(button: UIButton){
button.enabled = false
button.userInteractionEnabled = false
button.alpha = 0.5
}
答案 0 :(得分:0)
尝试禁用此按钮:
@IBAction func voteButton(sender: UIButton) {
sender.enabled = false
}
答案 1 :(得分:0)
您可以按NSUserDefaults
保存按钮的状态,我建议您将用户的投票状态上传到服务器。每次加载viewController时,都可以从服务器加载状态。
@IBAction func voteButton(sender: UIButton) {
let hitPoint = sender.convertPoint(CGPointZero, toView: self.tableView)
let hitIndex = self.tableView.indexPathForRowAtPoint(hitPoint)
let object = objectAtIndexPath(hitIndex)
self.userVote?.addObject(object!)
polls.addObject(object!)
object!.incrementKey("voteUp")
object!.saveInBackground()
self.tableView.reloadData()
NSLog("Top Index Path \(hitIndex?.row)")
//save the statue of button
NSUserDefaults.standardUserDefaults().setValue(“true", forKey: “buttonState")
}
然后在viewDidLoad()
override func viewDidLoad() {
super.viewDidLoad()
//get the state of the button
if let _ = NSUserDefaults.standardUserDefaults().valueForKey(“buttonState”) {
self.yourButton.userInteractionEnabled = false
self.yourButton.alpha = 0.5
}
}