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