如何在离开视图时保存变量
在我的主视图中,我从其他两个视图收集数据。我从主视图开始,转到下一个视图来获取数据并返回到原始视图。然后我转到最后一个视图并获取更多数据,但是当我返回时,原始数据消失了。如何在离开前保存它?如何在离开视图时保存变量
我试过使用viewWillDisappear
但它不工作。这是一个好方法,如果是这样,我该如何去使用它?
这些数据的两片通过赛格瑞进来:
var homeTeamName = String()
var awayTeamName = String()
我做这个当我加载:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib. }
HomeName.text = homeTeamName
HomeImage.image = UIImage(named:homeTeamName)
AwayName.text = awayTeamName
AwayImage.image = UIImage(named:awayTeamName)
}
Note:
一切都与远从一个视图来了,一切都与家从另一个来。
现在我保存这样的:
override func viewWillDisappear(_ animated: Bool) {
UserDefaults.standard.set("value", forKey: "homeTeamName")
}
检索这样的:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
UserDefaults.standard.string(forKey: "homeTeamName")
}
仍然没有工作。
在此先感谢!
当您离开时,您无法在ViewController类中存储变量。一切都可能被破坏。由于您只需存储两个字符串,最好的方法就是使用UserDefaults。
存储
UserDefaults.standard.set("value", forKey: "homeTeamName")
检索
使用该打印日志
print("printingValue\(UserDefaults.standard.string(forKey: "homeTeamName"))")
希望它能帮助!
我在什么时候运行这些代码行?我会存储在viewWillDisappear中,然后检索视图加载?另外,我将最多再有20个我想要存储的字符串。我仍然应该使用相同的方法吗? –
是的,您必须存储在viewWillDisappear中,并在viewDidLoad中检索。此外,你可以在UserDefaults中存储很多字符串。您可以为此目的或以任何您想要的方式创建单独的课程 –
已修改原始帖子。我这是你的意思? –
哎写这篇文章的数据存储
override func viewWillDisappear(_ animated: Bool) {
let userDefault = UserDefaults.standard
userDefault.set("value", forKey: "homeTeamName")
}
,并写这为数据Retriving写这个
override func viewWillAppear(_ animated: Bool) {
let userDefault = UserDefaults.standard
userDefault.value(forKey: "homeTeamName")
}
我认为它可以帮助ü。
什么是.standard? –
它是保存数据的首选字典,当你卸载应用程序时它会被删除。 Userdefaults.standard是首选词典。而userdefault是对象。并写入代码到viewwilldisappear和viewwillappear –
我想我发现我的问题。当我在viewWillAppear中检索时,是否需要执行此操作:homeTeamName = userDefault.value(forKey:“homeTeamName”) –
您是否尝试过委托模式? –
你可以使用appdelegate为你可以检查我以前的答案在这里https://*.com/questions/45407423/sharing-data-between-multiple-view-controllers-without-segue-swift-3/45408261#45408261 。 – luckyShubhra
你解决了这个问题吗? –