[英]Swift - Why is my function within a function not being called?
我正在为一个简单的测验应用程序开发一个项目。
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 语句开始该函数。 (更改 UI 文本)
func startOver() {
questionNumber = 0
nextQuestion()
}
但是,按“重新启动”时,UI 文本不会从最后一个问题更改为第一个问题,并且启动更改的唯一方法是按“真”或“假”按钮。
这运行了一个不同的函数并将第一个问题跳过到第二个问题。
由于“真”或“假”按钮没有启动重启警报(问题数不超过 12),我可以假设函数运行正确并将我的变量设置为 0。
但是,按“重新启动”时,重新启动应用程序的功能没有运行。
什么错误导致了这个? 我可以更改什么来使我的功能在按“重新启动”时运行?
Tl; dr:按重新启动按钮运行一个成功设置新变量的函数,但不运行指定的附加函数。 继续操作的唯一方法是按下应用程序的“真”或“假”按钮之一,从而打乱应用程序的流程。
非常感谢您的帮助 - 仍然是 Swift 的新手并且渴望学习!
原因是按钮被命名为重新启动。 swift 中还有其他函数也是restart()
。 只需更改它,它应该可以工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.