2015-06-18 36 views
1

現在我有兩個視圖控制器,當我從我的第二個視圖控制器收集數據時,我顯示它在我的第一個視圖控制器中的標籤(隨機整數):保持視圖控制器在你離開後回到它的狀態 - Swift

var FirstInteger = //random integer 

override func viewDidLoad() { 
    super.viewDidLoad() 

    TotalAmount.text = String(FirstInteger) 

這工作得很好,但是當用戶返回到第二視圖控制器,並得到一個新的隨機整數,我想對第一個聚集添加此整數,但很多時候用戶返回到第二個視圖控制器並「獲取」一個新的整數 - 所以我決定做這樣的事情:

var FirstInteger = //random integer 
var NewInteger = 0  

override func viewDidLoad() { 
    super.viewDidLoad() 
    TotalAmount.text = String(FirstInteger + NewInteger) 
    NewInteger = FirstInteger + NewInteger 

但我知道這是行不通的,因爲每次用戶都會回到第一個視圖控制器,它會將NewInteger的值重置爲0-有誰知道我該如何解決這個問題?

回答

0

您需要聲明NewInteger爲靜態像這樣

class MyClass 
{ 
    static var NewInteger = 0 
} 

這將創建只有一個變量newInteger這將是在類級別(或類級別SWIFT稱之爲)您應該可以在您的代碼中像這樣訪問它

MyClass.NewInteger = FirstInteger + MyClass.NewInteger 

通讀本作的變量類型和它們的生命週期更細節SWIFT

Type Properties

+0

由於一噸公司招聘我做到了,一切都開始工作。我將徹底研究類型屬性。 – PeteB

0

而不是讓第二個視圖控制器生成一個隨機數,讓第一個視圖控制器生成號碼,並將其傳遞到第二個視圖控制器。

如果您正在使用故事板,則可以使用prepareForSegue方法將變量傳遞到目標視圖控制器。

var firstInteger = 0 
var randomInteger = 0 

var total = 0 
override func viewDidLoad() { 
    super.viewDidLoad() 

    // Generate random number assuming you have this function 
    randomInteger = generateRandomNumber() 

    total = firstInteger + randomInteger 
    firstInteger = randomInteger 
} 

// Then pass total variable to your second view controller 

```

相關問題