gpt4 book ai didi

ios - Swift - 为什么我的函数内的函数没有被调用?

转载 作者:行者123 更新时间:2023-11-30 11:25:25 25 4
gpt4 key购买 nike

我正在开发一个简单测验应用程序的项目。

 import UIKit

class ViewController: UIViewController {

let allQuestions = QuestionBank()
var pickedAnswer: Bool = false
var questionNumber: Int = 0

//Place your instance variables here


@IBOutlet weak var questionLabel: UILabel!
@IBOutlet weak var scoreLabel: UILabel!
@IBOutlet var progressBar: UIView!
@IBOutlet weak var progressLabel: UILabel!

override func viewDidLoad() {
super.viewDidLoad()

let firstQuestion = allQuestions.list[0]
questionLabel.text = firstQuestion.questionText

}

@IBAction func answerPressed(_ sender: AnyObject) {
if sender.tag == 1 {
pickedAnswer = true
} else if sender.tag == 2 {
pickedAnswer = false
}

checkAnswer()

questionNumber = questionNumber + 1

nextQuestion()

}


func updateUI() {

}


func nextQuestion() {

if questionNumber <= 12 {
questionLabel.text = allQuestions.list[questionNumber].questionText
}
else {
let alert = UIAlertController(title: "Quiz Complete", message: "You have completed the quiz, do you want to start over?", preferredStyle: .alert)

let restartAction = UIAlertAction(title: "Restart", style: .default, handler: { (UIAlertAction) in
self.startOver()
})

alert.addAction(restartAction)

present(alert, animated: true, completion: nil)

}

}


func checkAnswer() {

let correctAnswer = allQuestions.list[questionNumber].answer

if correctAnswer == pickedAnswer {
print("You got it!")
} else {
print("Wrong!")
}

}


func startOver() {

questionNumber = 0
nextQuestion()

}



}

用户可以对一组问题回答正确或错误。问题存储在单独文件中的数组 0 - 12 中。有一个变量来确定问题编号。

   var questionNumber: Int = 0

每个问题后运行的函数内都有一个 if/else 语句 - 如果问题编号变量 <= 12,则询问下一个问题,并且问题编号变量增加 1。

 @IBAction func answerPressed(_ sender: AnyObject) {
if sender.tag == 1 {
pickedAnswer = true
} else if sender.tag == 2 {
pickedAnswer = false
}


checkAnswer()

questionNumber = questionNumber + 1

nextQuestion()

}


func updateUI() {

}


func nextQuestion() {

if questionNumber <= 12 {
questionLabel.text = allQuestions.list[questionNumber].questionText
}
else {
let alert = UIAlertController(title: "Quiz Complete", message: "You have completed the quiz, do you want to start over?", preferredStyle: .alert)

let restartAction = UIAlertAction(title: "Restart", style: .default, handler: { (UIAlertAction) in
self.startOver()
})

alert.addAction(restartAction)

present(alert, animated: true, completion: nil)

}

否则,系统会询问他们是否要重新启动。

我们的目标是,当用户遇到问题 #12 时,他们会看到一个 UIAlertView 来祝贺他们,并提供使用“重新启动”按钮重新启动的机会。

“重新启动”按钮运行一个函数,该函数将问题编号变量设置回 0,并且应该以询问第一个问题的 if/else 语句开始该函数。 (更改用户界面文本)

 func startOver() {


questionNumber = 0
nextQuestion()

}

但是,按“重新启动”后,UI 文本不会从最后一个问题更改为第一个问题,启动更改的唯一方法是按“true”或“false”按钮。

这会运行不同的函数,并将第一个问题跳到第二个问题。

从“true”或“false”按钮没有启动重新启动警报(问题计数不超过 12)这一事实来看,我可以假设该函数正确运行并将我的变量设置为 0。

但是,按“重新启动”时,重新启动应用程序的功能并未运行。

什么错误导致了这个问题?我可以更改什么以使我的函数在按“重新启动”时运行?

Tl;dr:按“重新启动”按钮将运行一个函数,该函数成功设置新变量,但不运行指定的附加函数。继续的唯一方法是按应用程序的“真”或“假”按钮之一,从而扰乱应用程序的流程。

非常感谢您的帮助 - 对 Swift 还是新手,渴望学习!

最佳答案

原因是该按钮名为“重新启动”。 swift 中还有其他函数也是 restart()。只需更改它就可以了。

关于ios - Swift - 为什么我的函数内的函数没有被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50787484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com