如何将数据从多个视图传递到一个?

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)。

答案

以下是在视图控制器之间传递数据的所有方法:

  1. 当执行segue时
  2. 在代码中以编程方式触发转换
  3. 通过应用程序的状态
  4. 使用单身人士
  5. 使用app委托
  6. 将委托分配给视图控制器
  7. 通过放松segues
  8. 直接引用视图控制器
  9. 使用用户默认值
  10. 通过通知
另一答案

在目前的情况下,我认为您可以简单地使用全局变量来保存您想要在不同页面/控制器中传递的多个值。

创建一个名为“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

如何将 JSON 数据从登录视图传递到多个视图控制器,是不是可能?

如何将列表视图中的数据从一个片段发送到另一个片段

如何将数据从 UIPageViewController 传递到它的“子视图”之一?