Ios 如果用户已经点击了正确的答案,我如何停止增加一个数字?
我正在制作一个测验应用程序,我想要它,这样当用户点击正确答案时,他们的分数就会增加1。然而,如果他们不继续下一个问题而继续点击相同的答案,他们的分数很容易增加Ios 如果用户已经点击了正确的答案,我如何停止增加一个数字?,ios,function,swift,Ios,Function,Swift,我正在制作一个测验应用程序,我想要它,这样当用户点击正确答案时,他们的分数就会增加1。然而,如果他们不继续下一个问题而继续点击相同的答案,他们的分数很容易增加 @IBAction func Button1Action(sender: AnyObject) { unhideLabel() if(correctAnswer == "1") { correctOrWrong.text = "Correct" scoreN
@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()
}
}
}
这取决于你的逻辑,我无法从你发布的代码中理解你是如何做到这一点的,这给了我一个“找不到接受所提供参数的“==”的重载”错误