我有一个实体,其中包含从5个视图控制器填充的属性。
该应用程序基本上是一个详细的基于形式的问卷,有5个问题,5个视图控制器中的每一个都包含一个问题及其答案选择集。在前4位,用户有多项选择题。在最后一个问题中,用户可以从选项集中选择多个值。
我为每个视图控制器维护了一个实体,以便为该视图控制器显示选项。
为了捕获用户的答案,我创建了一个名为Answer的实体,其中包含用于回答前4个问题的字符串属性以及与第五个实体的关系,以便我可以捕获用户为第5个问题选择的答案选项集。
我还需要保存用户选择,当用户从第一个问题移动到第二个问题到第三个问题时依此类推,当用户回答完所有问题时,我不需要一次性保存用户选择。
此外,如果用户弹出第一个问题的屏幕,用户可以放弃答案。
实现它的最佳方式是什么?
我正在寻找以下选项 -
请建议。
答案 0 :(得分:0)
我能看到的最简单方法是使用prepare(for segue :)方法将所有答案一路传输到下一个视图控制器。你会这样说
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let secondScene = segue.destination as! (nextController)
secondScene.answerQuestion1(declared variable in nextController) = (value you are transferring)
}
当您移动到下一个UIView时,在视图控制器中,在类声明之后,您可以简单地声明要存储该值的变量,因此对于与下一个问题相对应的UIView,
class QuestionTwo: UIViewController {
var answerQuestion1
override func viewDidLoad() {
super.viewDidLoad()
对所有视图控制器重复此操作,当您在第5个时,您将获得前4个问题以及第5个问题的所有答案,此时您可以将其保存在CoreData中然后清除变量中的值。