现在我有两个视图控制器,当我从第二个视图控制器收集数据时,我在第一个视图控制器的标签中显示它(一个随机整数):
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 :(得分: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中变量类型及其生命周期的更多详细信息