Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如果用户已经点击了正确的答案,我如何停止增加一个数字?_Ios_Function_Swift - Fatal编程技术网

Ios 如果用户已经点击了正确的答案,我如何停止增加一个数字?

Ios 如果用户已经点击了正确的答案,我如何停止增加一个数字?,ios,function,swift,Ios,Function,Swift,我正在制作一个测验应用程序,我想要它,这样当用户点击正确答案时,他们的分数就会增加1。然而,如果他们不继续下一个问题而继续点击相同的答案,他们的分数很容易增加 @IBAction func Button1Action(sender: AnyObject) { unhideLabel() if(correctAnswer == "1") { correctOrWrong.text = "Correct" scoreN

我正在制作一个测验应用程序,我想要它,这样当用户点击正确答案时,他们的分数就会增加1。然而,如果他们不继续下一个问题而继续点击相同的答案,他们的分数很容易增加

 @IBAction func Button1Action(sender: AnyObject) {
        unhideLabel()
        if(correctAnswer == "1") {
            correctOrWrong.text = "Correct"
            scoreNumber++
            score.text = "Score: \(scoreNumber)"
        }
        else {
            correctOrWrong.text = "Incorrect"
            hideNextQuestion()
        }
    }

    @IBAction func Button2Action(sender: AnyObject) {
        unhideLabel()
        if (correctAnswer == "2") {
            correctOrWrong.text = "Correct"
            scoreNumber++
            score.text = "Score: \(scoreNumber)"
    }
        else {
            correctOrWrong.text = "Incorrect"
            hideNextQuestion()

        }
    }

    @IBAction func Button3Action(sender: AnyObject) {
        unhideLabel()
        if (correctAnswer == "3") {
            correctOrWrong.text = "Correct"
            scoreNumber++
            score.text = "Score: \(scoreNumber)"
    }
        else {
            correctOrWrong.text = "Incorrect"
            hideNextQuestion()
        }
    }

    @IBAction func Button4Action(sender: AnyObject) {
        unhideLabel()
        if (correctAnswer == "4") {
            correctOrWrong.text = "Correct"
            scoreNumber++
            score.text = "Score: \(scoreNumber)"
    }
        else {
            correctOrWrong.text = "Incorrect"
            hideNextQuestion()
        }
    }
}

如果用户已经点击了正确答案,如果我想阻止分数增加,我需要添加/更改什么?

您可以创建一个布尔变量来跟踪问题是否得到了回答。因此,只需在增加分数之前进行检查,并且仅在布尔值尚未设置为true时增加分数,并且在增加分数的同时也将布尔值设置为true。这样,分数只会增加一次

只需保留一个
BOOL
属性,以确定用户是否选择了正确的答案

每次先检查它,如果之前已选择。不要加分数

    var hasSelected = false;

@IBAction func Button1Action(sender: AnyObject) {

    if(hasSelected){
        //Tell the user or do something you like
        return;
    }
    if(correctAnswer == "1") {
        correctOrWrong.text = "Correct"

        scoreNumber++

        score.text = "Score: \(scoreNumber)"
        //If user select the right answer
        hasSelected = true;

    }
    else {
        correctOrWrong.text = "Incorrect"
        hideNextQuestion()

    }

}
我认为更好的设计是


当用户选择正确的函数时,自动进入下一个问题

我建议您编写一个函数,而不是使用相同的实现编写四个不同的函数。您可以使用
UIButton
tag
属性在运行时确定单击的按钮。 假设您的按钮1具有标记值1,按钮2具有标记值2。。。。然后,您可以为所有四次单击按钮编写一个通用操作

对于您的问题停止增加分数,我建议您在用户第一次单击正确答案时禁用该按钮,并在加载下一个问题时启用所有按钮

 @IBAction func ButtonAction(sender: AnyObject) {
        unhideLabel()
        if ((sender as UIButton).tag == correctAnswer?.toInt()) {
           (sender as UIButton).enabled = false;
            correctOrWrong.text = "Correct"
            scoreNumber++

            score.text = "Score: \(scoreNumber)"
    }
        else {
            correctOrWrong.text = "Incorrect"
            hideNextQuestion()

        }
    }

我认为更好的方法是使用
UIButton
selected
属性,这是一个bool。代码将是这样的。我认为你在所有的4个案例中都做了同样的事情。那么,为什么不能使用一些传递答案参数的常用方法呢。这将稍微简化代码。 对不起,如果我错了。希望这对你有帮助

 @IBAction func Button1Action(sender: UIButton) {
            unhideLabel()
            if(correctAnswer == "1" && sender.selected != true) {
                correctOrWrong.text = "Correct"
                scoreNumber++
                score.text = "Score: \(scoreNumber)"
                sender.selected=true
            }
            else {
                correctOrWrong.text = "Incorrect"
                hideNextQuestion()
            }
        }

        @IBAction func Button2Action(sender: UIButton) {
            unhideLabel()
            if (correctAnswer == "2" && sender.selected != true) {
                correctOrWrong.text = "Correct"
                scoreNumber++
                score.text = "Score: \(scoreNumber)"
                sender.selected=true
        }
            else {
                correctOrWrong.text = "Incorrect"
                hideNextQuestion()
            }
        }

        @IBAction func Button3Action(sender: UIButton) {
            unhideLabel()
            if (correctAnswer == "3" && sender.selected != true) {
                correctOrWrong.text = "Correct"
                scoreNumber++
                score.text = "Score: \(scoreNumber)"
                sender.selected=true
        }
            else {
                correctOrWrong.text = "Incorrect"
                hideNextQuestion()
            }
        }

        @IBAction func Button4Action(sender: UIButton) {
            unhideLabel()
            if (correctAnswer == "4" && sender.selected != true) {
                correctOrWrong.text = "Correct"
                scoreNumber++
                score.text = "Score: \(scoreNumber)"
                sender.selected=true
        }
            else {
                correctOrWrong.text = "Incorrect"
                hideNextQuestion()
            }
        }
    }

这取决于你的逻辑,我无法从你发布的代码中理解你是如何做到这一点的,这给了我一个“找不到接受所提供参数的“==”的重载”错误