Ios Swift:是否更改其他Swift文件中的变量?没有变化?
我在2个不同的Swift文件(UIViewController)中有2个类 在第一个类中,我声明了一个变量:Ios Swift:是否更改其他Swift文件中的变量?没有变化?,ios,variables,swift,uiviewcontroller,Ios,Variables,Swift,Uiviewcontroller,我在2个不同的Swift文件(UIViewController)中有2个类 在第一个类中,我声明了一个变量: class HomeScreen: UIViewController { var Score = 0 let blackColor = UIColor.blackColor() @IBOutlet weak var ScoreLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() ScoreLabe
class HomeScreen: UIViewController {
var Score = 0
let blackColor = UIColor.blackColor()
@IBOutlet weak var ScoreLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
ScoreLabel.text = "Score: \(Score)"
}}
在第二个类/文件中,我想增加这个变量:
class SecondVC: UIViewController {
@IBAction func ButtonPressed(sender: AnyObject) {
HomeScreen().Score++
}}
如您所见,我想在标签中显示Score变量。
但总有“0”
怎么了
谢谢 这是:
@IBAction func ButtonPressed(sender: AnyObject) {
HomeScreen().Score++
}
您正在创建主屏幕的新实例,增加其值,然后在方法结束时,它超出范围,因此所有更改都将丢失
您应该改为更改初始化对象上的值,例如:
@IBAction func ButtonPressed(sender: AnyObject) {
// homeScreen is a reference to an already existing local variable
homeScreen.Score++
}
您的代码HomeScreen().Score++
正在创建一个新实例并递增该新实例的Score变量,然后该实例将被丢弃
您需要引用正在使用的实际主屏幕实例。我推荐几种方法作为参考。询问主屏幕的来源。这是重点;OP需要创建它,并将引用传递给这个VC,以便可以使用它。是的,这就完成了答案。