我正在开发一个简单测验应用程序的项目。
SELECT A.EducationalAttainment, A.age, A.population_count/B.age_population_count population_fraction
FROM
educational_attainment A
JOIN
(SELECT age, sum(population_count) age_population_count
FROM educational_attainment
GROUP BY age) B
ON A.age=B.age;
用户可以回答一组问题的真或假。问题存储在一个单独的文件中,数组为0-12。有一个变量可以确定问题编号。
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()
}
}
在每个问题之后运行一个函数中的if / else语句 - 如果问题编号变量&lt; = 12,则询问下一个问题并且问题编号变量增加1。
var questionNumber: Int = 0
否则,系统会询问他们是否要重新启动。
目标是当用户遇到问题#12时,会向他们展示一个祝贺他们的UIAlertView,并提供一个重启&#34;重启&#34;按钮。
&#34;重启&#34;按钮运行一个函数,它将问题编号变量设置回0,并应该使用if / else语句开始函数,该语句会询问第一个问题。 (更改UI文本)
@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)
}
然而,按下&#34;重新启动&#34; UI文本不会从最终问题变为第一个问题,并且启动更改的唯一方法是按下&#34; true&#34;或&#34;假&#34;按钮。
这会运行不同的功能,并将第一个问题跳到第二个问题。
从&#34; true&#34;或&#34;假&#34;按钮没有启动重启警报(问题计数不在12以上),我可以假设函数正确运行并将我的变量设置为0。
但是,按下&#34;重新启动&#34;。
时,重启应用程序的功能未运行导致此错误的是什么?我可以通过按&#34;重新启动&#34;?
来更改我的功能Tl; dr:按下“重启”按钮会运行一个成功设置新变量的函数,但不会运行指定的附加函数。唯一的方法是按下应用程序之一&#34; true&#34;或&#34;假&#34;按钮,弄乱了应用程序的流程。
非常感谢你的帮助 - 对Swift来说还是新手并且渴望学习!
答案 0 :(得分:0)
原因是按钮名为重新启动。快速还有其他功能,restart()
也是如此。只需更改它,它就可以工作。