我参加了Udemy上的Swift / iOS Bootcamp课程。在此之前,对于任何代码或课程,我都没有任何问题,但这使我感到困惑。该模块用于设置UIAlertController和UIAlertAction,并将测验应用重置为测验的开始。测验可以正常进行(至少在这一点上),但是,一旦弹出警报,我将无法单击它。它无法识别任何点击或点击,或者无法前进到收到点击时应调用的功能。
我正在按照本课程中编写的代码进行操作,但是问题之一可能是该课程所使用的Swift / Xcode版本比我早,但我并不是100%积极的。 可能会引起一些混乱。
但是,我曾经尝试利用Apple API文档,一次复制了所有示例代码,并进行调整以满足我的需要(就“确定”之后的调用功能而言),但即使是该代码也没有做到这一点。 t点击一下。我已经搜索了Stack,并根据其他论坛更改了代码,但没有任何效果。
func nextQuestion() {
if questionNumber <= allQuestions.list.count - 1 {
var nextQuestion = allQuestions.list[questionNumber]
questionLabel.text = nextQuestion.questionText
}
else {
let alert = UIAlertController(title: "Quiz Over", message: "You've Finished the Quiz, Press Restart to Start Over", preferredStyle: .alert)
let restartAction = UIAlertAction(title: "Restart", style: .default) { (UIAlertAction) in
self.startOver()
}
alert.addAction(restartAction)
self.present(alert, animated: true, completion: nil)
}
}
如上所述,警报上的“重新启动”按钮应强制测验重新启动。 startOver()函数将questionNumber重置为0,并调用nextQuestion()函数,并打印一行以让我知道该函数是否已被调用,这意味着该分接头已注册,但startOver()函数不正确,但是它不会打印该行,这表明根本没有调用该函数。
完整的ViewController:
import UIKit
class ViewController: UIViewController {
//Place your instance variables here
let allQuestions = QuestionBank()
var pickedAnswer : Bool = false
var questionNumber : Int = 0
@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()
nextQuestion()
}
func updateUI() {
}
func nextQuestion() {
questionNumber += 1
if questionNumber <= allQuestions.list.count - 1 {
var nextQuestion = allQuestions.list[questionNumber]
questionLabel.text = nextQuestion.questionText
}
else {
let alert = UIAlertController(title: "Quiz Over", message: "You've Finished the Quiz, Press Restart to Start Over", preferredStyle: .alert)
let restartAction = UIAlertAction(title: "Restart", style: .default) { action in self.startOver()
}
alert.addAction(restartAction)
self.present(alert, animated: false, completion: nil)
}
}
func checkAnswer() {
if pickedAnswer == allQuestions.list[questionNumber].answer{
print("good")
}
else if pickedAnswer != allQuestions.list[questionNumber].answer{
print("bad")
}
}
func startOver() {
questionNumber = -1
nextQuestion()
print(questionNumber)
print("Restarting")
}
}