通过使用按钮修改变量以供以后在另一个视图控制器中使用该变量的最简单方法是什么?



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

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

我为第一个 VC中的按钮分配了一个操作(拖动到第二个 VC 以显示第二个 VC),在第二个 VC 的视图中,我尝试使用以下命令从第一个 VC 访问变量: label.text = vc1.myVariable,它访问它,但是... ...但结果是变量的声明/未修改状态。因此,如果我在同一个 VC 上显示 myVariable,那没关系,但在第二个 VC 上,第一个 VC 上的按钮操作没有改变 myVariable。

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

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

要将第一个 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"]
}

最简单的方法是定义一个全局变量。因此,您可以从任何地方访问它。它应该在任何事物之外被定义为全局的。

#import UIKit
var myGlobalVariable = "Initial value"
class MyClass { ... }

然后,您可以从任何地方更改或读取它like print(myGlobalVariable).

请注意,虽然这是最简单的解决方案,但它也是最糟糕的解决方案。全局函数和变量用例很少见。

在显示控制器时通过初始值设定项注入数据。

show(SecondViewController(name: name), sender: nil)

查看此代码。

@Eljer...

虽然代表团一开始似乎很难,但它很容易。

作为初学者,您只需要记住 3 个步骤!我会尽量让你在这里使用起来。

第 1 步:在第二个视图控制器上也创建临时变量(相同类型)(您可以使用相同的名称制作也没关系)

第 2 步:编写此代码:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let xyz = segue.destination as! abc
}

xyz 是您要用来调用它的名称。abc 是第二个视图控制器的名称,您在其中创建了另一种相同类型的变量。

这将做的是,它将使您在第二视图控制器上拥有的所有对象(包括所有变量和函数)也可以在您的第一视图控制器上使用。

要在第二个视图控制器上使用/为标签分配值,您需要做的是... 只需添加:

xyz.yourVariableNameOnSecondViewController = variableNameOnFirstViewController

这会将第一个 VC 上的变量值分配给第二个 VC 上的变量

  1. 最后,更新值。您需要在第二个视图控制器上使用 viewDidLoad 获取此更新的值。

我希望这有所帮助,如果它仍然令人困惑,请问我任何事情。 格鲁克

相关内容

最新更新