【问题标题】:Printing an array of integers in a collection of buttons, Swift在按钮集合中打印整数数组,Swift
【发布时间】:2016-09-26 05:52:50
【问题描述】:

我正在 Xcode 中创建一个测验游戏,测验完成后我有一个屏幕显示提出的 5 个问题(来自 70 多个数组)以及相应的正确答案 (Answer) 和用户选择的答案 (用户答案)。

我目前有一组用于正确答案的标签 (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

               }

【问题讨论】:

    标签: arrays swift loops


    【解决方案1】:

    如果有不清楚的地方,请随时询问。

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

    【讨论】:

    • 谢谢,这非常有帮助,但它并不完全有效,因为我的标签是奥特莱斯系列,而不仅仅是单一奥特莱斯。
    猜你喜欢
    • 1970-01-01
    • 2015-08-15
    • 2011-02-09
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    相关资源
    最近更新 更多