gpt4 book ai didi

ios - 当传递到另一个 ViewController 时重置变量

转载 作者:行者123 更新时间:2023-11-29 05:42:20 25 4
gpt4 key购买 nike

我的问题是,当我切换到另一个 ViewController 时,我之前 VC 调用的变量被重置,所以我无法执行我想要的操作

@IBAction func BackBtn(_ sender: Any) {
self.nbrQst = 10
self.Switch1A = 2
performSegue(withIdentifier: "Numero", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "Numero" {
let vc = segue.destination as! ViewController
vc.nbrQt = nbrQst
}
if segue.identifier == "Numero" {
let vcNv = segue.destination as! ViewController
vcNv.Switch1 = Switch1A
}
}

下面是我将信息从 Lvl1 文件发送到 lvl 选择器文件以添加 if else 来解锁 lvl 的方式

@IBAction func BackBtn(_ sender: Any) {
self.nbrQst = 10
self.Switch1A = 2
performSegue(withIdentifier: "Numero", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let vc = segue.destination as! ViewController
vc.nbrQt = nbrQst
vc.Switch1 += 2
}

这是第二个 ViewController 将号码发送给第一个 ViewController,我希望第一个 ViewController 记住该号码,并在每次按下发送号码的按钮时将它们相加

最佳答案

我们将“Selector VC”称为主 VC。

这些数字在主 VC 中重置的原因是,当您按“BackBtn”时,您实际上并没有返回主 VC,而是创建一个新的主 VC 并转到那里(因为您在中执行了 performSegue(withIdentifier: "Numero", sender: self) BackBtn 函数,performSegue 总是带你到一个新的 VC 而不是带你回去)。新的主 VC 具有从初始数字开始的所有这些字段(我假设它们最初为零)。

你想做的是后退,而不是前进。根据您从主 VC 转到级别 VC 的方式,您有不同的方式返回主 VC。

如果您将所有内容推送到导航 Controller 上,那么您可以通过以下方式返回:

self.navigationController?.popToRootViewController(animated: true)

如果您以模态方式呈现所有内容,则可以返回

self.dismiss(animated: true, completion: nil)

你说,你想更新主VC中的值,以便你可以阻止/取消阻止下一个级别。实现此目的的一个非常标准的方法是通过 delegate ,请 Google 一下(“Swift 中的代表”)并按照他们的教程进行操作。

我强烈建议您在继续开发自己的应用程序之前参加有关快速开发的在线类(class),因为您可能会做很多错误的事情并浪费大量时间试图从 Stack Overflow 获得答案.

关于ios - 当传递到另一个 ViewController 时重置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56446439/

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