Iphone 应用程序在前台和后台

Iphone 应用程序在前台和后台,iphone,ios5,xcode4.2,Iphone,Ios5,Xcode4.2,我的viewcontroller中有一个开/关按钮,当用户打开它时,它会播放一些音乐。现在,如果用户单击iPhone home按钮并再次启动我的应用程序,该按钮将显示为ON,但不会播放音乐。因此,用户必须再次按ON-OFF-ON键才能重新开始播放音乐 有人知道我如何调用“开/关视图控制器”按钮,以便在应用程序进入后台时将其设置为“关”,并在这些应用程序代理中将其设置为“开”,然后在应用程序进入forground时播放音乐吗 我知道我需要将应用程序标识背景上的按钮和音乐状态写入plist文件。我不

我的viewcontroller中有一个开/关按钮,当用户打开它时,它会播放一些音乐。现在,如果用户单击iPhone home按钮并再次启动我的应用程序,该按钮将显示为ON,但不会播放音乐。因此,用户必须再次按ON-OFF-ON键才能重新开始播放音乐

有人知道我如何调用“开/关视图控制器”按钮,以便在应用程序进入后台时将其设置为“关”,并在这些应用程序代理中将其设置为“开”,然后在应用程序进入forground时播放音乐吗

我知道我需要将应用程序标识背景上的按钮和音乐状态写入plist文件。我不知道如何从appdelegate获取这些操作,因为它们是在我的viewcontroller中定义的

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

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

     NSLog(@"Inside applicationDidEnterBackground");
}

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

    NSLog(@"Inside applicationWillEnterForeground");

}

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


如果应用程序委托不直接包含对活动视图控制器的引用,则它可以将消息沿链发送到根视图控制器,然后根视图控制器可以将消息发送到下一个视图控制器,等等。,每个控制器都会保存其认为重要的内容。

您只需在视图控制器中订阅UIApplicationIdentinterBackgroundNotification通知

[[NSNotificationCenter defaultCenter] addObserver: self
                                         selector: @selector(handleEnteredBackground:) 
                                             name: UIApplicationDidEnterBackgroundNotification
                                           object: nil];
还有一个关于DidEnterForeground的通知