前景和背景中的应用程序

问题描述:

我的视图控制器中有一个按钮ON/OFF,当用户打开它时播放一些音乐。现在,如果用户点击iPhone主页按钮并重新启动我的应用程序,该按钮显示为“开”,但没有音乐播放。因此用户必须再次打开ON-OFF-ON才能开始播放音乐。前景和背景中的应用程序

任何人都知道如何调用我的ON/OFF视图控制器按钮,以便在应用程序进入背景并将其设置为ON时将其设置为OFF,并在这些应用程序代表进入forground时播放音乐?

我知道我需要写一个plist文件按钮&音乐状态applicationDidEnterBackground。我不知道如何从appdelegate获得这些动作,因为它们是在我的视图控制器中定义的。

同样,当应用程序进入前台时,我将读取保存的plist文件,然后再次设置音乐和按钮的状态。再次,我不知道如何从委托调用我的控制器方法。

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 

    NSLog(@"Inside applicationDidEnterBackground"); 
} 

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

    NSLog(@"Inside applicationWillEnterForeground"); 

} 

一种可能的方法是从应用程序代理向视图控制器发送消息以保存或恢复状态。然后,可以访问其内部状态的视图控制器可以实现任何需要的保存和恢复方法。

如果应用程序委托没有直接包含对活动视图控制器的引用,它可以将消息沿着链发送到根视图控制器,然后它可以向下一个视图控制器发送消息等,每个控制器在下降时保存它认为重要的任何东西。

所有你需要做的是订阅UIApplicationDidEnterBackgroundNotification时通知您的视图控制器

[[NSNotificationCenter defaultCenter] addObserver: self 
             selector: @selector(handleEnteredBackground:) 
              name: UIApplicationDidEnterBackgroundNotification 
              object: nil]; 

也Theres为DidEnterForeground的通知了。