我想制作一个抽认卡应用,其行为是在CoursesVC
上,用户可以添加课程并单击它们。然后他得到了带有抽认卡的清单。在那里,他可以添加更多的抽认卡。该存储由CoreData
管理。当单击单元格时,我使用prepareForSegue
将数据传递到抽认卡列表。为了添加抽认卡,我想到了相同的想法,但是这是不可能的,因为在创建prepareForSegue
时,第二个视图控制器的变量没有初始化。问题:如何以适当的方式将NSManagedObject
从第一个ViewController
传递到第三个ViewController
? (丑陋的方法是在创建prepareForSegue之前让视图呈现)
与诸如“如何在ViewController之间传递数据”之类的问题的区别在于,我有三个ViewController。在第一个和第二个视图控制器上使用prepareForSegue不能正常工作,因为创建prepareForSegue时,尚未定义第二个VC中的变量,因为该视图尚未初始化!请记住,从第二个到第三个视图控制器的顺序是“以页面形式”的“当前呈现”!
答案 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
}
}