如何根据按钮单击将数组传递给视图控制器?

时间:2018-01-18 03:55:10

标签: ios arrays swift xcode uibutton

所以我正在创建一个测验应用...

应用布局:

查看Controller1:选择测验主题

体育(UI按钮)

数学(UIButton)

汽车(UIButton)

动物(UIButton)

(根据用户点击它的按钮,它会将它们带到另一个视图控制器,列出用户可以选择的几个类别来进行评估) < / p>

ViewController2:选择测验类别

类别 - 动物

哺乳动物(UIButton)

爬行动物(UIButton)

肉食者(UIButton)

鱼(UIButton)

(现在,根据用户对类别的选择,我希望能够通过一个视图控制器发送问题,而不是制作特定于每个类别的同一视图的多个视图控制器。)

希望这是有道理的......

我有多个问题库设置,其中包含特定于类别的问题

这是我使用的模型:

导入基金会

class Questions {
  let questionText : String
  let answer : String
  let option1 : String
  let option2 : String
  let option3 : String
  let option4 : String

  init(text: String, correctAnswer: String, textA: String, textB: String, textC: String, textD: String) {
    questionText = text
    answer = correctAnswer
    option1 = textA
    option2 = textB
    option3 = textC
    option4 = textD
  }
}

这是包含问题的QuestionBank.swift文件

import Foundation

class QuestionBank1 {
  var list = [Questions]()

  init() {

    list.append(item)

    list.append = (Questions(text: "What is the largest animal found on earth?", correctAnswer: "elephant", textA: "tiger", textB: "grey whale", textC: "lion", textD: "elephant" ))   
  }
}

所以希望你还和我在一起,显然问题库里还有更多的问题,但是如何通过一个处理问题并提供4个多项选择答案的视图控制器传递某些QuestionBank.swift文件,具体取决于用户在上一个视图控制器上选择的类别,这有意义吗?

PS我是编码新手并且仍在努力使语言正确

1 个答案:

答案 0 :(得分:0)

您可以在prepareForSegue方法中传递与该特定类别相关的问题列表。在Questions模型中,您必须添加类别属性。

请参阅此link了解如何执行此操作。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  let selectedIndexPath = self.tableView.indexPathForSelectedRow()!

  let selectedCategory = categories[selectedIndexPath.row]
  let categoryQuestions = questions.filter({$0.category == selectedCategory})
  let questionsViewController = segue.destinationViewController as! QuestionsViewController
  questionsViewController.questions = questions
}