swift - 通过使用 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 上的按钮操作更改。
我试图避免委托,因为它看起来很复杂..
完成任务最简单的方法是什么?感谢你们。
解决方案
要将第一个 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"]
}
推荐阅读
- docker - 在 openshift 中同步服务的所有 Pod
- reactjs - React Native Google Signin Fail 当我将构建发布 apk 时
- python - 如何从 tweepy 类中解析子元素
- javascript - 带有获取 API 结果的搜索栏 (ReactJs)
- amazon-s3 - 减少 Allure 报告中生成的要上传到 s3 的 json 文件的数量
- python - 来自 selenium 的 Chrome 不会同步
- c# - 控制器抛出我无法捕获的错误(MVC5、C#、EF6)
- laravel - Laravel 的 JWT 身份验证
- ignite - hibernate-ogm apache ignite 不起作用
- r - 如何在 R 中声明变量,以便可以在图表中使用它们进行不同的观察?