2011-02-27 23 views
1

我在Settings Bundle中创建了一个包含外部设置的应用程序。一切都很完美。我将数据保存在每个用户交互中,并读取每个视图开关上的数据(使用viewDidAppear触发器)。如何从iOS4中的背景中重新唤醒视图时的数据?

当用户退出应用程序,然后进入设置,更改设置,然后重新启动应用程序时,就会出现问题。就我所知,使用iOS4时,应用程序从不真正“退出”,只是进入后台。因此,当用户“重新启动”应用程序时,它将返回到他们留下的完全相同的视图,但是,在用户切换视图,触发viewDidAppear和我的相应变量加载和屏幕更新功能之前,所有设置更改都不会生效。

简单地说,我的问题是:

有类似viewDidAppear功能,可以检测到应用程序已“重新唤醒”从背景,并在那里我可以再触发我的数据读取和屏幕更新功能?


为了澄清,这里就是我想在ChartViewController.m调用代码:我甚至不知道我会开始把这个在AppDelegate中

- (void)applicationDidBecomeActive:(UIApplication *)application { 
    [self loadChartSettings]; 
    [self.tableView reloadData];  
} 

,因为我所有的处理和显示生成代码位于ChartViewController中。

回答

2

当您的应用程序重新启动时,您的应用程序委托将收到-applicationDidBecomeActive:消息。实现该方法来读取用户默认值。或者,如果您想在其他课程中完成,请注册UIApplicationDidBecomeActiveNotification通知。

+0

你也可以注册为'NSUserDefaultsDidChangeNotification'的通知,检测当NSUserDefaults中的设置发生更改时。 – Anomie 2011-02-27 03:21:50

+0

感谢您的uper-prompt回复!好的,我认为这在我的代码中指向了更深层次的体系结构设计问题:我重新读取每个单独的viewController.m文件中的设置。我已经用NSLog确认applicationDidBecomeActive在重新启动时正在AppDelegate内正确触发,因为您声明,请问如何将该数据发送到活动视图控制器? – AcroYogi 2011-02-27 04:07:59

1

你可能寻找此功能在您的UIAppDelegate:

- (void)applicationDidBecomeActive:(UIApplication *)application; 

而且,这可能是对你有用:

-(void)applicationWillEnterForeground:(UIApplication*)application;