加载标题ViewController当applicationDidBecomeActive:

时间:2013-04-03 20:57:00

标签: objective-c ios6 multitasking appdelegate

我创建了一个包含两个viewcontrollers的应用。该应用程序打开标题屏幕(一般UIViewController标题为'标题'),其中第二个视图是一个自定义类(OSViewController标题为'MapView')的segue连接。实际上,应用程序在进入后台状态时会暂停,因此它会从您离开的位置打开,通常位于MapView中。

我想知道在应用程序变为活动状态时让应用程序从标题屏幕开始我需要做什么。优选地,如果它不活动超过1分钟,我希望它打开标题屏幕。从我一直在阅读的内容来看,似乎我会在我的AppDelegate中的applicationDidBecomeActive:方法中调用它来编写代码。请提供代码以放入applicationDidBecomeActive:方法(如果这是放置它的正确位置)当从非活动状态转换到活动状态时,将重新打开我的应用程序到标题屏幕。我的应用程序几乎已经完成,但我想解决这个问题,而且我没有很多处理应用程序状态的经验。在此先感谢您的时间。

如果您需要更多信息,请询问。

1 个答案:

答案 0 :(得分:0)

您还可以注册一个类作为“didBecomeActive”通知的观察者。您应该将它放在viewDidLoad或类的init方法中。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil]; 

在这种情况下,willBecomeActive:是您在类中定义的方法,当应用再次变为活动状态时,会调用该方法。这可能看起来像这样:

- (void)willBecomeActive:(NSNotification *)notification {
    if (self.navigationController.topViewController == self) {
        [self.navigationController popToRootViewControllerAnimated:YES];
    }
}

您还需要在viewDidUnload方法

中添加它
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];

修改 谢谢@AMayes的建议。在这种情况下,我不相信键/值观察是必要的。