1

我创建了一个有两个视图控制器的应用程序。该应用程序打开一个标题屏幕(标题为“Title”的通用 UIViewController),并与作为自定义类的第二个视图(OSViewController 标题为“MapView”)的 segue 连接。实际上,应用程序在进入后台状态时会暂停,因此它会在您离开的地方打开,这通常是在 MapView 中。

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

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

4

1 回答 1

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 的建议。在这种情况下,我不相信键/值观察是必要的。

于 2013-04-03T21:09:11.610 回答