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

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

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

最佳答案

基本上,这是解决方案: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
    }
}

关于ios - 如何在多个(在我的设置3中)ViewController之间传递数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53314139/

10-13 04:28