在您离开并返回后将视图控制器保持在它的状态 - Swift

Keeping a view controller in it's state after you leave and come back to it- Swift

现在我有两个视图控制器,当我从第二个视图控制器收集数据时,我将它显示在第一个视图控制器的标签中(一个随机整数):

var FirstInteger = //random integer

override func viewDidLoad() {
    super.viewDidLoad()

    TotalAmount.text = String(FirstInteger)

这很好用,但是当用户返回到第二个视图控制器并获得一个新的随机整数时,我想将这个整数添加到收集到的第一个整数中,但是用户返回到第二个视图的次数很多控制器和 "gets" 一个新的整数 - 所以我决定做这样的事情:

var FirstInteger = //random integer
var NewInteger = 0    

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

但我知道这行不通,因为每次用户返回到第一个视图控制器时,它都会将 NewInteger 的值重置为 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

```

您需要像这样将 NewInteger 声明为静态的

class MyClass 
{
    static var NewInteger = 0
}

这将只创建一个变量 newInteger,它将处于 class 级别(或 SWIFT 调用的类型级别),您应该能够在您的代码中像这样访问它

MyClass.NewInteger = FirstInteger + MyClass.NewInteger

通读本文以获取有关 SWIFT

中变量类型及其生命周期的更多详细信息

Type Properties