首页 > 解决方案 > 通过使用 Button 修改变量以便稍后在另一个 View Controller 中使用该变量的最简单方法是什么?

问题描述

我有两个视图控制器。一个带有按钮和标签的 VC 和一个仅带有标签的 VC。如果按下按钮,我创建了可以修改变量(在第一个视图控制器的类中声明)的按钮操作,并且我可以将 MODIFIED 变量显示为同一 VC 中的标签,但我的目的是在另一个 VC 上显示 MODIFIED 变量。

我想使用该按钮转到第二个 VC,当显示该 VC 时,修改后的变量应显示在标签上。在第一个 VC 中我声明: var myVariable: String = "default" 在按钮操作中: {myVariable = "700"} 在第二个 VC 中我声明: let vc1: ViewController1 = ViewController1()

我为第一个 VC 中的按钮分配了一个操作(拖动到第二个 VC 以显示第二个 VC),在第二个 VC 的 viewdidload 中,我尝试从第一个 VC 访问变量:label.text = vc1.myVariable 并访问它但是 ... ...但是结果是变量的 DECLARED/notMODIFIED 状态。因此,如果我在同一个 VC 上显示 myVariable 是可以的,但在第二个 VC 上 myVariable 并没有被第一个 VC 上的按钮操作更改。

我试图避免委托,因为它看起来很复杂..

完成任务最简单的方法是什么?感谢你们。

标签: swiftxcodebutton

解决方案


要将第一个 VC 变量的更新值更新为第二个 VC,您可以使用NSNotificationCenter.

在第一个 VC 中,当您当时更改值时,您必须使用字典发布通知,如下所示。

NotificationCenter.default.post(name: NSNotification.Name("ValueUpdate"), object: nil, userInfo: ["variable": myVariable])

为此,您必须在第二个 VC 中观察通知

NotificationCenter.default.addObserver(self, selector: #selector(handleNotification(notification:)), name: Notification.Name("ValueUpdate"), object: nil)

然后您必须实施以下方法才能在您的第二个 VC 中获取更新

@objc func handleNotification(notification: Notification) {
    label.text = notification.userInfo?["variable"]
}

推荐阅读