Я работаю над проектом для простого приложения для викторины.
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()
}
}
Пользователь может ответить на ряд вопросов как true, так и false.Вопросы хранятся в массиве 0 - 12 в отдельном файле.Существует переменная для определения номера вопроса.
var questionNumber: Int = 0
В функции выполняется оператор if / else после каждого вопроса - если переменная номера вопроса <= 12, задается следующий вопрос иПеременная номера вопроса увеличивается на 1. </p>
@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, который поздравляет их и предлагает возможность перезапустить с помощью кнопки «Restart».
Кнопка «Restart» запускает функцию, которая устанавливает переменную номера вопроса обратно в 0 и должна начинать функцию с if /еще заявление, которое задает первый вопрос.(Изменяет текст пользовательского интерфейса)
func startOver() {
questionNumber = 0
nextQuestion()
}
Однако при нажатии «Перезапустить» текст пользовательского интерфейса не изменяется от последнего вопроса к первому вопросу, и единственный способ инициировать изменение - нажать «Кнопка «истина» или «ложь».
Эта функция запускает другую функцию и пропускает первый вопрос ко второму.
Начиная с того факта, что кнопка «истина» или «ложь» неИнициируя предупреждение о перезапуске (количество вопросов не превышает 12), я могу предположить, что функция работала правильно и установить мою переменную равной 0.
Однако функция перезапуска приложения не запускалась при нажатии «Перезапуск».
Какая ошибка вызывает это?Что я могу изменить, чтобы заставить мою функцию запускаться при нажатии «Restart»?
Tl; dr: Нажатие кнопки «Restart» запускает функцию, которая успешно устанавливает новую переменную, но не запускаетсяуказана дополнительная функция.Единственный способ продолжить - это нажать одну из кнопок приложения «истина» или «ложь», что мешает работе приложения.
Большое спасибо за помощь - Все еще новичок в Swift истремится учиться!