2016-10-09 1 views
1

J'ai vérifié mon code trois fois et je n'y ai pas trouvé d'erreur mais ma sortie me montre la mauvaise réponse. Le code est du testeur de jeu ajoutant simple.Erreur dans la sortie du programme SWIFT suivant

import UIKit 

class ViewController: UIViewController { 

    var score = 0 
    var firstNumber: Int? 
    var secondNumber: Int? 
    var answer: Int? 
    var input: Int? 
    var count = 0 
    @IBOutlet weak var lblTitleLabelOUTLET: UILabel! 
    @IBOutlet weak var lblEquationOUTLET: UILabel! 
    @IBOutlet weak var txtAnswerFieldOUTLET: UITextField! 
    @IBOutlet weak var btnCheckAnswerOUTLET: UIButton! 
    @IBOutlet weak var lblScoreDisplayerOUTLET: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    displayQuestion() 


} 

    @IBAction func pressedCheckedAnswerButtonACTION(sender: UIButton) { 
     if (input == answer){ 
      score = score + 1 
      lblScoreDisplayerOUTLET.text = "Your score is \(score) out of \(count) " 
      } 
     else{ 
      lblScoreDisplayerOUTLET.text = "Incorrect ans " 
     } 
    displayQuestion() 
    } 

    func displayQuestion() { 

     firstNumber = Int(arc4random_uniform(10)) 
     secondNumber = Int(arc4random_uniform(10)) 
     lblEquationOUTLET.text = String(firstNumber!) + " + " + String(secondNumber!) + " = " 
     answer = firstNumber! + secondNumber! 
     input = Int(txtAnswerFieldOUTLET.text!) 
     lblTitleLabelOUTLET.text = String(input) 

     count = count + 1 
     } 

} 

Répondre

2

Vous calculez input lorsque vous créez et affichez la question. Vous devez déplacer ce code vers le haut de pressedCheckedAnswerButtonACTION.

@IBAction func pressedCheckedAnswerButtonACTION(sender: UIButton) { 
    input = Int(txtAnswerFieldOUTLET.text!) 

    if input == answer { 
     score = score + 1 
     lblScoreDisplayerOUTLET.text = "Your score is \(score) out of \(count) " 
    } 
    else { 
     lblScoreDisplayerOUTLET.text = "Incorrect ans " 
    } 
    displayQuestion() 
} 
+0

Cela a fonctionné pour moi. Mais pourriez-vous m'expliquer explicitement comment cela a fonctionné? Merci d'aider –

+0

Tout cela a à voir avec le calendrier. De la façon dont vous l'avez codé, la variable 'input' a été calculée lorsque la question a été affichée, ce qui est trop tôt. Vous devez attendre que l'utilisateur ait tapé sa réponse et appuyé sur le bouton. Avec mon changement, 'input' est assigné après que l'utilisateur ait entré sa réponse et appuyé sur le bouton. – vacawama

0

À partir du code original, si vous ne mettez displayQuestion() sur viewDidAppear au lieu de viewDidLoad fonctionnera. C'est parce que dans viewDidLoad vous n'avez pas l'étiquette créée à l'écran, donc vous essayez d'accéder à sa valeur avec input = Int(txtAnswerFieldOUTLET.text!) dans viewDidLoad