2014-11-15 60 views
0

我在2個不同的Swift文件(UIViewController)中有2個類。Swift:更改其他swift文件中的變量?不用找了?

在第一類中,我宣佈一個變種:

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-var在標籤中。 但總是停留「0」

什麼是錯誤?!

謝謝!

回答

0

此:

@IBAction func ButtonPressed(sender: AnyObject) { 

    HomeScreen().Score++ 
} 

您正在創建的HomeScreen一個新實例,增加它的值,然後,在方法的結束,它是走出去的範圍,因此,所有的變化都將丟失。

你應該是一個初始化對象改變值而不是,像代替:

@IBAction func ButtonPressed(sender: AnyObject) { 

    // homeScreen is a reference to an already existing local variable 
    homeScreen.Score++ 

} 
+0

乞討「家庭屏幕」來自哪裏的問題。 – zaph

+1

這是關鍵; OP需要創建它並將參考傳遞給此VC以便可以使用它。 – Anorak

+0

是的,那就完成了答案。 – zaph

1

您的代碼HomeScreen().Score++是創建一個新實例,並增加新的實例的分數變量,則該實例正在扔掉。

您需要對正在使用的實際HomeScreen實例的引用。我建議使用Passing Data between View Controllers作爲參考。