在后台启动应用程序时如何避免加载viewControllers / views?

时间:2013-03-07 23:49:03

标签: ios objective-c memory-management

我正在开发一款可以在后台因位置事件而启动的应用。从日志中我看到,当发生这种情况时,我的初始viewController也会被加载。有没有办法只在应用程序实际变为活动时加载?初始视图控制器通过故事板设置。

感谢。

2 个答案:

答案 0 :(得分:2)

您可以按如下方式禁止自动设置应用程序窗口:在故事板中选择初始视图控制器,转到属性检查器并取消选择“初始场景 - >是初始视图控制器”。这将生成警告,因为现在无法访问场景。转到身份检查器并设置故事板ID。

为了让应用程序在您需要时正常工作,请手动设置窗口...

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    BOOL condition = /* whatever condition that makes you want to present the UI */
    if (!application.keyWindow.rootViewController && condition) {
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
        // use the your view controller subclass here if you've made one
        UIViewController *vc= [storyboard instantiateViewControllerWithIdentifier:@"the identifier"];
    application.keyWindow.rootViewController = vc;
}

答案 1 :(得分:0)

在App Delegate中设置位置管理器并处理其中的位置事件。将App Delegate设置为该位置管理器的委托。