如何将数据从多个视图传递到一个?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将数据从多个视图传递到一个?相关的知识,希望对你有一定的参考价值。
在我的主控制器中,我有多个标签,我还有七个视图,每个视图我需要将一个变量传递给主变量并填充其中一个标签。现在我的问题是,当我发送一个变量并填充一个标签,然后我转到另一个页面并尝试发送一个变量,它按照预期填充一个单独的标签,但它也删除另一个的文本标签。这是我一直在做的事情:
此代码位于其中一个辅助视图上(不是带有标签的视图)
var cpu: String = ""
@IBAction func intel8350k(_ sender: UIButton) {
cpu = "Intel Core i3 8350k"
if cpu != "" {
performSegue(withIdentifier: "seuge", sender: self)
}
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
var mainController = segue.destination as! ViewController
mainController.cpuString = cpu
}
在带有标签的主视图上:
var cpuString = ""
@IBOutlet weak var cpuLabel: UILabel!
cpuLabel.text = cpuString
对于其他视图,我想从其几乎相同的方式发送数据,除了替换变量(例如cpuString是coolString)。
答案
以下是在视图控制器之间传递数据的所有方法:
- 当执行segue时
- 在代码中以编程方式触发转换
- 通过应用程序的状态
- 使用单身人士
- 使用app委托
- 将委托分配给视图控制器
- 通过放松segues
- 直接引用视图控制器
- 使用用户默认值
- 通过通知
另一答案
在目前的情况下,我认为您可以简单地使用全局变量来保存您想要在不同页面/控制器中传递的多个值。
创建一个名为“Global.swift”的新文件
struct Global {
static var cpu = ""
static var memory = ""
}
因此,在许多控制器中,您可以轻松地使用存储和获取数据,如下所示。
// set the value
Global.cpu = "20.0"
Global.memory = "0.4"
// get value
print(Global.cpu)
请注意,每次运行应用程序时都会重置此变量。
以上是关于如何将数据从多个视图传递到一个?的主要内容,如果未能解决你的问题,请参考以下文章
将数据从片段列表视图项传递到活动字符串变量 onitemclicklistener
将数据从 RecyclerView.Adapter 传递到片段 onClick