2016-09-25 71 views
0

我在Xcode中创建一个测验游戏,测验完成后显示一个屏幕,显示5个问题(来自70+的数组)正确答案(答案)和用户选择的答案(UserAnswer)。在一组按钮中打印一个整数数组,Swift

我目前拥有正确答案的标签集合(CorrectAnswer),以及用户答案YourAnswer的单独标签集合。我想连续打印5个标签(QuestionName,YourAnswer,CorrectAnswer)的每个集合中为每个数组存储的所有5个值。

我一般都是编码的新手,所以在循环中使用数组的帮助是值得赞赏的。

第一个视图控制器:

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 

       } 

回答

0

随意问是否有什么东西不清楚。

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 
     } 
    } 
} 
+0

谢谢这是非常有用的,但它并不是所有的工作,因为我的标签是出口集合不只是单一的网点。 – EllaHiggins

+0

我明白了。尝试这个? – RyuX51

+0

感谢您的帮助,现在所有的工作 – EllaHiggins