2015-05-29 41 views
0

我正在製作測驗應用程序,每次用戶按下按鈕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. 
} 

} 
+1

請考慮減少此處提供的代碼量,以便我們可以快速找到問題的根源。 – YMomb

+0

你好!對不起,因爲我是新的,我不完全確定你需要準確地看到哪些部分,所以我只是把所有東西都貼出來! – simlimsd3

+0

您是否嘗試過使用調試器並逐步瀏覽程序以查看發生了什麼? – rghome

回答

0

button1Press

調用 Questions之間
if countLabel.text == "1" 

if countLabel.text == "0" 

可以改變的countLabel.text值。
它設置爲"0",您將執行第二個條件以及第一個條件。

更換if countLabel.text == "0"

else 

,同樣的事情與button2Press,當然。

+0

非常感謝您的幫助。非常感激。 – simlimsd3