gpt4 book ai didi

ios - 在不同类中的值更改之前和之后访问相同的变量 - Swift

转载 作者:行者123 更新时间:2023-11-30 14:02:16 24 4
gpt4 key购买 nike

我一直坚持一个简单的概念(我猜),基本上我在 Storyboard 上有两个 ViewController,我也有 2 个类,ViewController 和 ViewController2:

我有一个默认值 (0) 的标签,当我单击按钮时,我想将此变量的值更改为 10,然后单击“显示”按钮并打印此变量,我已成功更改标签并打印新值。

真正的问题是,当我想从另一个 View 获取新的变量值时,即使在更改值之后,如果我尝试在第二个 View 上打印变量,变量总是返回默认值(0)

enter image description here

View Controller

import UIKit

class ViewController: UIViewController {

var variable = "0"
@IBOutlet var defaultLabel: UILabel!
@IBOutlet var label1Label: UILabel!

@IBAction func setValue(sender: AnyObject) {
setValue()
}


@IBAction func getValue(sender: AnyObject) {
getValue()
}
override func viewDidLoad() {
super.viewDidLoad()
}

func setValue(){
variable = "10"
defaultLabel.text = variable
}

func getValue(){
print(variable)
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}


}

ViewController2

import UIKit

class ViewController2: UIViewController {

@IBOutlet var label2Label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()

}

@IBAction func show(sender: AnyObject) {
print(ViewController().getValue())

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()

}
}

我找到了这篇文章:

Access variable in different class - Swift

我真的认为这就是我找到解决方案的方法,但我真的不明白如何在 ViewController2 上调用变量。

谢谢。

最佳答案

@IBAction func show(sender: AnyObject) { 
print(ViewController().getValue())
}

ViewController() - 这是类构造函数,每次调用 ViewController() 时,它都会返回 ViewController 类的新实例/对象,当然有默认值。

如果您从 ViewController 显示 ViewController2,您可以创建一个属性/变量 variable2,就像 variable 中的 variable>ViewController 并在显示之前设置值,但在创建 ViewController2 之后。如果您使用 Segues,您可以将此代码放入 ViewController 类中:

// Put this code in ViewController class
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let viewController2 = segue.destinationViewController as? ViewController2
if viewController2 != nil {
// you can't set the value for label at this time
// because the viewcontroller and all its UI controls aren't loaded
// but you can set a non UI variable
viewController2?.variable2 = self.variable
}
}

之后,您可以在 ViewController2 类的 viewDidLoad 方法中添加一行代码:

// Put this code in ViewController2 class
var variable2 = "0"
@IBOutlet var label2Label: UILabel!

override func viewDidLoad() {
super.viewDidLoad()
self.label2Label.text = variable2
}

关于ios - 在不同类中的值更改之前和之后访问相同的变量 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32854307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com