如何在离开视图时保存变量

问题描述:

在我的主视图中,我从其他两个视图收集数据。我从主视图开始,转到下一个视图来获取数据并返回到原始视图。然后我转到最后一个视图并获取更多数据,但是当我返回时,原始数据消失了。如何在离开前保存它?如何在离开视图时保存变量

我试过使用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") 
} 

仍然没有工作。

在此先感谢!

+0

您是否尝试过委托模式? –

+0

你可以使用appdelegate为你可以检查我以前的答案在这里https://*.com/questions/45407423/sharing-data-between-multiple-view-controllers-without-segue-swift-3/45408261#45408261 。 – luckyShubhra

+0

你解决了这个问题吗? –

当您离开时,您无法在ViewController类中存储变量。一切都可能被破坏。由于您只需存储两个字符串,最好的方法就是使用UserDefaults。

存储

UserDefaults.standard.set("value", forKey: "homeTeamName") 

检索

​​

使用该打印日志

print("printingValue\(UserDefaults.standard.string(forKey: "homeTeamName"))") 

希望它能帮助!

+0

我在什么时候运行这些代码行?我会存储在viewWillDisappear中,然后检索视图加载?另外,我将最多再有20个我想要存储的字符串。我仍然应该使用相同的方法吗? –

+0

是的,您必须存储在viewWillDisappear中,并在viewDidLoad中检索。此外,你可以在UserDefaults中存储很多字符串。您可以为此目的或以任何您想要的方式创建单独的课程 –

+0

已修改原始帖子。我这是你的意思? –

哎写这篇文章的数据存储

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") 
} 

我认为它可以帮助ü。

+0

什么是.standard? –

+0

它是保存数据的首选字典,当你卸载应用程序时它会被删除。 Userdefaults.standard是首选词典。而userdefault是对象。并写入代码到viewwilldisappear和viewwillappear –

+0

我想我发现我的问题。当我在viewWillAppear中检索时,是否需要执行此操作:homeTeamName = userDefault.value(forKey:“homeTeamName”) –