【发布时间】:2016-09-15 15:00:08
【问题描述】:
当我从 VC1 转到 VC2 时,如果 VC2 被解散,我可以通过在 VC2 中设置 protocal 并让 VC1 符合它来轻松地将数据传回 VC1。但是,我想做类似的事情,但有以下区别
当我从 VC1-> NavVC->VC2-> VC3 去时。当 VC3 被关闭时,会显示 VC1。我希望能够将数据传回 VC1 并在 VC1 中启动一些功能。例如,我有一个要在 VC3 中上传的图像。一旦 VC3 被解雇,我希望在 VC1 中有一个函数,例如以下函数,其中图像是来自 VC3 的数据
func uploadInitiate(image: UIImage) {}
三个VC的关系
VC1 是普通的 VC。它通过
呈现VC2let navController = UINavigationController.init(rootViewController: VC2)
self.navigationController?.presentViewController(navController, animated: true, completion: nil)
VC2 是一个来自 cocoapods 的自定义 FusumaCamera 照片选择器。 选择图像后,我通过所选图像进入 VC3
self.navigationController!.pushViewController(postVC, animated: true)
在 VC3 中,我允许用户与图像交互并制作 cmets 并按下按钮上传到服务器。我认为在按下按钮后立即关闭 VC 并允许 VC1 使用来自 VC3 的数据启动上传会很好(这样我可以在导航栏下有一个进度条或在那里显示任何警告)
【问题讨论】:
-
您可以使用相同的模式,让 VC1 符合某些协议,然后将引用传递给 VC2,然后将其传递给 VC3。或者,如果您真的要从 VC3 转到 VC1,请使用展开转场从 VC3 转到 VC1,然后使用
prepareForSegue将数据传回。 -
这里有什么关系? VC1 是否期望 VC2 最终会得到一个图像? VC3 只是被 VC2 用来帮助获取图像吗?
-
@rmaddy,问题已更新以解决您的回复。谢谢
-
鉴于此,我同意@Rob。像往常一样使用代表。 VC3 将图像传给 VC2 后,VC2 将图像传给 VC1。
-
成功了!在 VC3 和 VC2 中都有协议,实现起来又快又容易。再次感谢@Rob 和 rmaddy