如何在多个(在我的设置3中)ViewController之间传递数据?

时间:2018-11-15 07:11:08

标签: ios swift core-data uiviewcontroller

enter image description here enter image description here

我想制作一个抽认卡应用,其行为是在CoursesVC上,用户可以添加课程并单击它们。然后他得到了带有抽认卡的清单。在那里,他可以添加更多的抽认卡。该存储由CoreData管理。当单击单元格时,我使用prepareForSegue将数据传递到抽认卡列表。为了添加抽认卡,我想到了相同的想法,但是这是不可能的,因为在创建prepareForSegue时,第二个视图控制器的变量没有初始化。问题:如何以适当的方式将NSManagedObject从第一个ViewController传递到第三个ViewController? (丑陋的方法是在创建prepareForSegue之前让视图呈现)

与诸如“如何在ViewController之间传递数据”之类的问题的区别在于,我有三个ViewController。在第一个和第二个视图控制器上使用prepareForSegue不能正常工作,因为创建prepareForSegue时,尚未定义第二个VC中的变量,因为该视图尚未初始化!请记住,从第二个到第三个视图控制器的顺序是“以页面形式”的“当前呈现”!

1 个答案:

答案 0 :(得分:0)

这基本上是解决方案:Swift : prepareForSegue with navigation controller

问题是第三个视图控制器被嵌入为导航控制器。这就是prepareForSegue与众不同的原因。

解决方案是在第二个VC中使用以下prepareForSegue:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let navigationVC = segue.destination as? UINavigationController, let myViewController = navigationVC.topViewController as? DViewController {
        myViewController.currentCourse = self.currentCourse
    }
}