我正在製作測驗應用程序,每次用戶按下按鈕1或按鈕2時,變量「currentQuestion」和「currentAnswer」遞增1以提供字典中的下一個問題。爲什麼我的變量不會遞增1
除了當我運行我的應用程序並使用標籤來測試計數器時,它有時會在我選擇正確答案時加倍。我花了很長時間試圖解決這個問題,但我無法理解它!
此外,我明白我的代碼可能是可怕的,任何有關如何改善它的建議都會很棒!
由於
import UIKit
class ViewController: UIViewController {
// Program Outlets
@IBOutlet weak var questionLabel: UILabel!
@IBOutlet weak var button1: UIButton!
@IBOutlet weak var button2: UIButton!
@IBOutlet weak var countLabel: UILabel!
@IBOutlet weak var incorrectLabel: UILabel!
@IBOutlet weak var testLabel: UILabel!
// Program Variables
var questionStorage =
[
"1" : "Red is a four letter word. True or False?" ,
"2" : "Cat is a three letter word. True or False?",
"3" : "Dog is a five letter word. True or False",
"4" : "I Smell Like a wet noodle!",
"5" : "The ultimate smell awaits"
]
// True = 1 & False = 0
var questionAnswers =
[
"1" : "0",
"2" : "1",
"3" : "0",
"4" : "1",
"5" : "0"
]
var incorrectQuestions: [String] = []
var incorrectQuestionCount = 0
var questionCount = 1
var currentQuestion = 1
var currentAnswer = 1
// Program Functions
// Question Generation Function
func Questions() {
var currentQuestionString = String(currentQuestion)
var currentAnswerString = String(currentAnswer)
// Question Selection Variables
var question = questionStorage[currentQuestionString]
var answer = questionAnswers[currentAnswerString]
// Question Counter Variables
//countLabel.text = currentQuestionString
// Question Generation Code
questionLabel.text = question
countLabel.text = answer
testLabel.text = currentAnswerString
}
// Check for quiz completion
func checkFinish() {
if questionCount == 5 {
questionLabel.text = "Test Finished"
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// Button Setup
button1.layer.cornerRadius = 30;
button1.layer.borderWidth = 1
button1.layer.borderColor = UIColor.blackColor().CGColor
button2.layer.cornerRadius = 30;
button2.layer.borderWidth = 1
button2.layer.borderColor = UIColor.blackColor().CGColor
// Begin Program
Questions()
}
// True & False Button Actions
@IBAction func button1Press(sender: AnyObject) {
if countLabel.text == "1" { // correct
incorrectQuestions.append(questionLabel.text!)
++currentQuestion
++currentAnswer
Questions()
checkFinish()
++questionCount
++incorrectQuestionCount
}
if countLabel.text == "0" { // incorrect
incorrectQuestions.append(questionLabel.text!)
++currentQuestion
++currentAnswer
Questions()
checkFinish()
++questionCount
++incorrectQuestionCount
}
}
@IBAction func button2Press(sender: AnyObject) {
if countLabel.text == "0" { // correct
incorrectQuestions.append(questionLabel.text!)
++currentQuestion
++currentAnswer
Questions()
checkFinish()
++questionCount
++incorrectQuestionCount
}
if countLabel.text == "1" { // incorrect
incorrectQuestions.append(questionLabel.text!)
++currentQuestion
++currentAnswer
Questions()
checkFinish()
++questionCount
++incorrectQuestionCount
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
請考慮減少此處提供的代碼量,以便我們可以快速找到問題的根源。 – YMomb
你好!對不起,因爲我是新的,我不完全確定你需要準確地看到哪些部分,所以我只是把所有東西都貼出來! – simlimsd3
您是否嘗試過使用調試器並逐步瀏覽程序以查看發生了什麼? – rghome