0

我正在尝试创建一个包含两个按钮的测验应用程序,即 false 和 true 按钮。我的问题是,当我在应用程序中回答更多问题时,我希望 textLabel 跟踪我的分数。然后当我再次回到第一个问题时,它应该重置。到目前为止,这是我的代码。我期待着你的回答。

class ViewController: UIViewController {
    
    @IBOutlet weak var questionLabel: UILabel!
    @IBOutlet weak var progressBar: UIProgressView!
    @IBOutlet weak var trueButton: UIButton!
    @IBOutlet weak var falseButton: UIButton!
    @IBOutlet weak var scoreLabel: UILabel!
    
    
    var quizBrain = QuizBrain()
    
    override func viewDidLoad() {
        
        super.viewDidLoad()
        updateUI()
        progressBar.progress = 0.0
    }
    
    @IBAction func answerButtonPressed(_ sender: UIButton) {
        
        let userAnswer = sender.currentTitle
        let userGotItRight = quizBrain.checkAnswer(userAnswer!)
        
        if userGotItRight {
            sender.shortChangeTo(.green)
        } else {
            sender.shortChangeTo(.red)
        }
        
        quizBrain.nextQuestion()
        
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
            self.updateUI()
            
        }
    }
    
    
    func updateUI() {
        

        questionLabel.text = quizBrain.getQuestionText()
        
        trueButton.backgroundColor = UIColor.clear
        falseButton.backgroundColor = UIColor.clear
        
        progressBar.progress = 33
        
        scoreLabel.text = "Score: \(quizBrain.getScore)"
        
    }
}
4

1 回答 1

1

你还没有任何代码吗?您可以创建一个类似用户的结构

struct user {
var score: Int = 0
mutating func answerRight (){
self.score =+ 1 }

mutating func reset (){
self.score = 0 }

}

但是我在您的代码“Score: (quizBrain.getScore)”中看到了这一点,这表示 quizBrain 应该知道分数。但是您永远不会为其添加值因此检查您的 quizBrain 并创建一个可以跟踪分数的函数或对象,然后在此处调用它“if userGotItRight {}”

于 2020-12-18T10:19:56.720 回答