离开后让视图控制器保持在状态并回到它 - 斯威夫特

时间:2015-06-18 21:17:56

标签: ios swift viewcontroller

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

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-是否有人知道如何解决这个问题?

2 个答案:

答案 0 :(得分: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

```

答案 1 :(得分:0)

您需要将NewInteger声明为静态类似

class MyClass 
{
    static var NewInteger = 0
}

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

MyClass.NewInteger = FirstInteger + MyClass.NewInteger

阅读本文,了解有关SWIFT中变量类型及其生命周期的更多详细信息

Type Properties