2013-04-03 53 views
1

我创建了一个具有两个viewcontroller的应用程序。该应用程序打开到标题屏幕(标题为'标题'的普通UIViewController),第二个视图是自定义类(标题为“MapView”的OSViewController)。实际上,应用程序在进入后台状态时会暂停,因此它会在您离开的地方打开,这通常位于MapView中。加载标题ViewController当applicationDidBecomeActive:

我想知道我需要做什么才能让应用在标题屏幕启动时启动。最好是,我希望它打开到标题屏幕,如果它是无效的超过1分钟。从我一直在读什么,好像我会做出applicationDidBecomeActive打电话:法在我的AppDelegate在编写这个请我提供的代码放在applicationDidBecomeActive:方法(如果那是把它放在正确的地方)当从非活动状态转换到活动状态时,将重新打开我的应用程序到标题屏幕。我的应用程序快完成了,但我想解决这个问题,并且我没有很多处理应用程序状态的经验。在此先感谢您的时间。

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

+0

您是否有建议的任何运气? – daltonclaybrook 2013-04-04 22:28:14

+0

我最终走了一条不同的路线来完全避免这种情况。你的建议帮助我做出这个决定,通过避免它来解决问题。我没有验证你是正确的,因为我没有成功测试它。感谢您的时间。 – JBeesky 2013-04-14 02:23:44

回答

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的意见。在这种情况下,我不认为关键/价值观是必要的。

+0

您应该添加的,他可以使用'popToRootViewController'呼叫,并且还必须实现' - (空)observeValueForKeyPath:(的NSString *)的keyPath ofObject:(ID)对象的变化:(NSDictionary的*)的变化范围内:(无效*) context' – AMayes 2013-04-04 00:13:06

相关问题