限制用户行动 - 斯威夫特

时间:2015-12-02 23:46:18

标签: ios swift parse-platform ibaction

我正在尝试在我的应用上实施投票功能。我希望用户在按下按钮后只在我的应用上投票一次。用户在按下按钮后无法按下按钮,但是,当取消并重新加载应用程序时,用户仍然可以按下按钮并增加“计数”。我尝试集成禁用按钮功能,但仍然不限制用户投票(或按下按钮)。

我是否必须为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
    }

2 个答案:

答案 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

    } 

}