我正在用Xcode创建一个问答游戏,在问答完成后,我有一个屏幕,其中显示了所问的5个问题(来自70+数组),以及相应的正确答案(答案)和用户选择的答案(UserAnswer)。
我目前有一个正确答案(CorrectAnswer)的标签集合和一个单独的user answers YourAnswer标签集合。我希望连续打印为5个标签(QuestionName、YourAnswer、CorrectAnswer)集合中的每个数组存储的所有5个值。
我是编程新手,所以任何在循环中使用数组的帮助都将不胜感激。
First View Controller:
struct Question {
var Question : String
var Answers : [String]!
var Answer : Int!
var UserAnswer : Int!
}
var Questions = [Question]()
第二个视图控制器:
class ScoreViewController: UIViewController {
var Questions = [Question]()
var CorrectAnswerTotal = Int()
var QuestionNumberTotal = Int()
let TOTAL_QUESTIONS = 0
var AnswerNumber = Int()
@IBOutlet var QuestionName: [UILabel]!
@IBOutlet var YourAnswer: [UILabel]!
@IBOutlet var CorrectAnswer: [UILabel]!
for i in 0..<Questions.count {
var q = Questions[i].Question
var ai = Questions[i].Answer
var a = Questions[i].Answers[ai]
var uai = Questions[i].UserAnswer
var ua = Questions[i].Answers[uai]
//This is where the error is
if QuestionNumberTotal < TOTAL_QUESTIONS {
if (ai != uai){
QuestionName.text = Questions[i].Question
YourAnswer.text = Questions[i].UserAnswer
CorrectAnswer.text = Questions[i].Answer
}
发布于 2016-09-26 04:47:21
如果有什么不清楚的地方,请随时询问。
struct Question {
var question: String
var answers: [String]
var correctAnswer: Int
var userAnswer: Int
}
var questions = [Question]()
var correctAnswerTotal = 0
@IBOutlet var questionName: [UILabel]!
@IBOutlet var yourAnswer: [UILabel]!
@IBOutlet var correctAnswer: [UILabel]!
override func viewDidLoad() {
super.viewDidLoad()
// fill it with some examples
questions.append(Question(question: "Question 1?", answers: ["Answer 1", "Answer 2", "Answer 3", "4", "Answer 5"], correctAnswer: 0, userAnswer: 1))
questions.append(Question(question: "Question 2?", answers: ["Answer 1", "Answer 2", "Answer 3", "4", "Answer 5"], correctAnswer: 1, userAnswer: 2))
questions.append(Question(question: "Question 3?", answers: ["Answer 1", "Answer 2", "Answer 3", "4", "Answer 5"], correctAnswer: 3, userAnswer: 3))
// assure, that the necessary amount of labels exists
guard questionName.count >= questions.count
&& yourAnswer.count >= questions.count
&& correctAnswer.count >= questions.count else {
print("Not enough labels.")
return
}
// starts at 0 and ends at last-1
for i in 0..<questions.count {
let q = questions[i]
let user = q.answers[q.userAnswer]
let correct = q.answers[q.correctAnswer]
// set labels texts
questionName[i].text = q.question
yourAnswer[i].text = user
correctAnswer[i].text = correct
// correct answer is green, incorrect answer is red
if q.correctAnswer == q.userAnswer {
correctAnswerTotal += 1
yourAnswer[i].textColor = UIColor.green
} else {
yourAnswer[i].textColor = UIColor.red
}
}
}
https://stackoverflow.com/questions/39691383
复制相似问题