gpt4 book ai didi

ios - 如何在 swift 中将数据从第二个 VC 传递到第一个 VC 中容器内的 VC

转载 作者:行者123 更新时间:2023-11-29 05:28:27 31 4
gpt4 key购买 nike

我从呈现的 VC 导航到 VC(让我们调用 VC A)。在 VC A 中,我有一个容器 View ,它有一个 VC(让我们调用 VC B)。从 VC B 我提出了另一个 VC(我们称之为 VC C)。我需要从 VC C 将一些数据传递回 VC B。我怎样才能实现相同的目标。

我尝试使用协议(protocol),但协议(protocol)没有击中我的 VC B。它只击中 VC A。但由于我从 VC B 呈现 VC C,所以我无法将委托(delegate)从 VC A 连接到自身。因此它不起作用。

再次尝试将数据保存为全局变量。我尝试将值设置为 VC B 中 viewWillAppear 和 ViewDidAppear 中的字段。但由于某种原因它每次都会崩溃。崩溃即将上线

containerView.addSubview(remitController.view).


let remitController = remitStoryboard.instantiateViewController(withIdentifier: "AddBeneficiaryController") as! AddBeneficiaryController
addChildViewController(remitController)
remitController.view.translatesAutoresizingMaskIntoConstraints = false

containerView.addSubview(remitController.view)

NSLayoutConstraint.activate([
remitController.view.leadingAnchor.constraint(equalTo: containerView.leadingAnchor),
remitController.view.trailingAnchor.constraint(equalTo: containerView.trailingAnchor),
remitController.view.topAnchor.constraint(equalTo: containerView.topAnchor),
remitController.view.bottomAnchor.constraint(equalTo: containerView.bottomAnchor)
])

remitController.didMove(toParentViewController: self)

最佳答案

使用闭包来解决问题陈述。

VCC Controller 中创建一个闭包

class VCC: UIViewController {
var handler: ((String)->())?

func passDataToVCB() {
handler?("This is sample data.")
}
}

每当您想要将数据连同相关数据一起传递回 VCB 时,请调用处理程序。我在这里使用了String

接下来,在 VCB 中,当您呈现 VCC 实例时,设置handler 值,

if let vcc = self.storyboard?.instantiateViewController(withIdentifier: "VCC") as? VCC {
vcc.handler = {(value) in
print(value)
}

//present vcc here...
self.present(vcc, animated: true, completion: nil)
}

关于ios - 如何在 swift 中将数据从第二个 VC 传递到第一个 VC 中容器内的 VC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57920228/

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