【问题标题】:App in foreground and background前台和后台应用
【发布时间】:2012-01-22 19:53:58
【问题描述】:

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

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

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

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

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

     NSLog(@"Inside applicationDidEnterBackground");
}

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

    NSLog(@"Inside applicationWillEnterForeground");

}

【问题讨论】:

    标签: iphone ios5 xcode4.2


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      还有 DidEnterForeground 的通知。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-07
        • 2017-10-27
        • 1970-01-01
        • 2011-09-15
        • 1970-01-01
        • 2019-01-28
        相关资源
        最近更新 更多