在其他ViewController中更改的一个ViewController中更新NSUserDefaults数据

时间:2015-07-04 19:34:31

标签: ios swift

我有两个viewcontroller:MainController和OptionsController。 OptionsController可以通过MainController中的按钮访问它。 在OptionsController中,我可以使用NSUserDefaults保存一些值。 MainController中需要这些值。 如果我在返回MainController时在OptionsController中更改这些值,则它们不会更改,但如果我再次启动MainController,则会正确更改这些值。 似乎当MainController再次变为活动状态时,在离开OptionsController后,不再引发viewDidLoad。 我怎样才能更新MainController中的数据?

2 个答案:

答案 0 :(得分:4)

正如rounak所说,viewDidLoad仅在视图控制器的生命周期中被调用一次。如果您希望每次显示视图控制器时都执行代码,请将其放在viewWillAppear

NSUserDefaults是一种在内存中对象之间传递信息的相当重要的方式(它写入磁盘)。如果你不想在跑步之间保持持久性,那么他建议的其他选择之一会更好。我建议委托模式或完成块。

答案 1 :(得分:3)

viewDidLoad仅为视图控制器调用一次。只要值在OptionsController中发生变化,您就可以使用NSNotification,KVO,块或委托模式之类的东西在MainController中获取回调。

您可以在viewWillAppear中编写代码,每次弹出选项控制器时都会调用该代码。