【发布时间】:2020-05-28 10:15:30
【问题描述】:
我的应用程序中有 VC(不是根 VC),单击按钮后我不会在那里添加框。添加工作正常。我的 var 在另一个模型 swift 文件中 (av = ActualValues())。默认 var 为 0,每次我关闭我的 VC 时,var 回到值 0。我该如何解决它?用户默认值不起作用:/ 这是我的代码 实际值(查看 var 数量):
import Foundation
import Firebase
class ActualValues {
var id = "not changed"
var databaseID = "not changed"
var shift = 1
var product: String?
var target: Int = 0
var issueNumber: String?
var issue: String?
var issueNote: String?
var breakNumber: String?
var customer: String?
var quantity: Int = 0
var teamLeader: String?
var numberOfPeople: String?
var numberOfRejects = "0"
var reasonOfRejects: String?
var endNote: String?
var podType: String = "Not selected"
var typeOfWork = "not specified"
...
还有 statsVC:
import UIKit
class CurrentStatsViewController: UIViewController {
var av = ActualValues()
var defaultsQuantity = UserDefaults.standard.integer(forKey: "quantity")
@IBOutlet weak var menuButton: MyButton!
@IBOutlet weak var boxButton: MyButton!
@IBOutlet weak var rejectButton: MyButton!
//Labels
@IBOutlet weak var planLabel: UILabel!
@IBOutlet weak var actualLabel: UILabel!
@IBOutlet weak var rejectsLabel: UILabel!
@IBOutlet weak var effLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
menuButton.isEnabled = true
boxButton.isEnabled = true
rejectButton.isEnabled = true
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
planLabel.text = "\(av.target)"
actualLabel.text = "\(av.quantity)"
}
@IBAction func menuButtonTapped(_ sender: MyButton) {
self.dismiss(animated: true, completion: nil)
}
@IBAction func boxButtonTapped(_ sender: MyButton) {
addQuantity()
}
@IBAction func rejectsButtonTapped(_ sender: MyButton) {
}
//FUNC
func addQuantity() {
av.quantity = (av.quantity + 1)
actualLabel.text = "\(av.quantity)"
print(av.quantity)
}
}
每次我关闭 segue 时如何保存 var,如果我回到这个 VC,如何加载最后一个数字?
【问题讨论】:
-
您不能将 viewWillDisappear 中的 ActualValues 属性设置为 0 吗?或者更确切地说是 viewDidDisappear developer.apple.com/documentation/uikit/uiviewcontroller/…
-
没有。例如,我添加了 10 个盒子。然后我解雇了 VC,并在应用程序中做其他事情。 2 分钟后回到 VC 并想再添加 5 个盒装。所以当我回来时,我想在我的Label中看到10,并添加5。当我下次返回时,我想看到15,并添加更多......但是现在每次打开VC时,av.quantity和label为 0。
-
啊,我明白了。那么你有2个选择。您可以将其保存在 nsuserdefaults 中,就像您在 viewWillDisappear 中尝试的那样(例如 - stackoverflow.com/questions/31203241/…),或者将其保存在您的模型中。问题是,模型需要持久化,你在哪里创建它?
-
创建一个静态变量并为其分配变量值..然后您可以从任何地方访问该值..或者您可以使用单例模式
标签: ios swift variables uiviewcontroller