我有两个viewcontroller:MainController和OptionsController。 OptionsController可以通过MainController中的按钮访问它。 在OptionsController中,我可以使用NSUserDefaults保存一些值。 MainController中需要这些值。 如果我在返回MainController时在OptionsController中更改这些值,则它们不会更改,但如果我再次启动MainController,则会正确更改这些值。 似乎当MainController再次变为活动状态时,在离开OptionsController后,不再引发viewDidLoad。 我怎样才能更新MainController中的数据?
答案 0 :(得分:4)
正如rounak所说,viewDidLoad
仅在视图控制器的生命周期中被调用一次。如果您希望每次显示视图控制器时都执行代码,请将其放在viewWillAppear
。
NSUserDefaults
是一种在内存中对象之间传递信息的相当重要的方式(它写入磁盘)。如果你不想在跑步之间保持持久性,那么他建议的其他选择之一会更好。我建议委托模式或完成块。
答案 1 :(得分:3)
viewDidLoad仅为视图控制器调用一次。只要值在OptionsController中发生变化,您就可以使用NSNotification,KVO,块或委托模式之类的东西在MainController中获取回调。
您可以在viewWillAppear中编写代码,每次弹出选项控制器时都会调用该代码。