gpt4 book ai didi

ios - 将数据传递给不是以前 VC 的 VC

转载 作者:行者123 更新时间:2023-11-28 06:34:10 26 4
gpt4 key购买 nike

当我从 VC1 转到 VC2 时,如果 VC2 被解雇,我可以通过在 VC2 中设置协议(protocol)并让 VC1 符合它,轻松地将数据传回 VC1。我想做类似的事情,但有以下区别

当我从 VC1->NavVC->VC2->VC3 走的时候。当 VC3 被解散时,将显示 VC1。我希望能够将数据传回 VC1 并在 VC1 中启动一些功能。例如,我有一张图片要在 VC3 中上传。一旦 VC3 被解雇,我希望在 VC1 中有一个函数,例如以下函数,其中图像是来自 VC3 的数据

func uploadInitiate(image: UIImage) {}

三个VC的关系

VC1为普通VC。它通过

呈现VC2
let navController = UINavigationController.init(rootViewController: VC2)
self.navigationController?.presentViewController(navController, animated: true, completion: nil)

VC2 是来自 cocoapods 的自定义 FusumaCamera 照片选择器。选择图像后,我通过以下方式使用所选图像转到 VC3

self.navigationController!.pushViewController(postVC, animated: true)

在 VC3 中,我允许用户与图像交互并发表评论,然后按下按钮上传到服务器。我认为在按下按钮后立即关闭 VC 并允许 VC1 使用来自 VC3 的数据启动上传会很好(这样我可以在导航栏下有一个进度条或在那里显示任何警告)

最佳答案

您有多种模式可以应用于类似的情况。我将以代表团(推荐)为例。假设你有 VC1->它以模态方式将 UINavigationController 呈现为根 Controller ,然后 VC2 将 VC3 推送到堆栈。您必须定义多个协议(protocol),这些协议(protocol)将在您关闭 VC3 时调用

protocol DismissVCDelegate : class {
func dismissViewAndStartUpload(shouldUpload: Bool)
}

然后存储属性:

weak var delegate: DismissVCDelegate!

当您从 VC2 推送它并符合您在 VC2 中定义的协议(protocol)时,将委托(delegate)设置为 VC3。将相同的模式一直应用到 VC1,您已经多次返回协议(protocol),您可以开始上传任务,您应该像这样关闭模态呈现的导航 Controller :

func dismissViewAndStartUpload(shouldUpload: Bool) {
self.presentedViewController.dismissViewControllerAnimated(true, completion: nil)}

关于ios - 将数据传递给不是以前 VC 的 VC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39514350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com