applicationDidEnterBackground 触发 popToViewController

Posted

技术标签:

【中文标题】applicationDidEnterBackground 触发 popToViewController【英文标题】:applicationDidEnterBackground fire popToViewController 【发布时间】:2013-06-16 00:23:58 【问题描述】:

我正在使用 Storyboard,然后在我的 AppDelegate 中手头没有导航控制器编程(到目前为止一切正常)。

现在我需要触发“applicationDidEnterBackground”我希望我的应用指向导航控制器到第一个屏幕(即 popToView 或 popToRoot。

我尝试使用一些方法,发现如下:

已编辑: - 插入 applicationDidEnterBackgoround 方法

//*-- BEGIN
- (void)applicationDidEnterBackground:(UIApplication *)application

    _mainMenuDelegate = [[UIStoryboard storyboardWithName: stb_name bundle: nil] instantiateViewControllerWithIdentifier: @ "idMainMenu"];
    [[_window.rootViewController navigationController] popToViewController: _mainMenuDelegate animated: NO];

     NSArray * = viewContrlls _window.subviews;
     for (int i = 0; i <[viewContrlls count], i + +)
     
        id obj = [viewContrlls objectAtIndex: i];
        if ([obj isKindOfClass: [MainMenu class]])
        
            [[_window.rootViewController navigationController] popToViewController: obj animated: YES];
            return;
        
     
  //*-- END

但是第一个没有触发,第二个只是 1 个结果行,它不是 MainMenu,所以不要跳转到 ViewController。

我的问题是:知道我正在使用 Storyboard,该怎么做?

谢谢

【问题讨论】:

【参考方案1】:

试试看:

NSArray* viewControllers = [[_window.rootViewController navigationController] viewControllers];

for (int i = 0; i < [viewControllers count]; i++)

    id obj = [viewControllers objectAtIndex: i];

    if ([obj isKindOfClass: [MainMenu class]])
    
        [[_window.rootViewController navigationController] popToViewController: obj
                                                                      animated: YES];

        return;
    

希望对你有帮助。

【讨论】:

这不是问题。问题是它没有跳转到视图控制器。这个循环进入1次,但是这1次不是我想去的viewcontroller,所以不去。即使插入到手头,作为第一块代码,也不会 我正在编辑我的代码并插入我试图用 applicationDidEnterBackgoround 做的所有部分 我编辑了我的问题以显示我在做什么。你的代码无论如何都不起作用。

以上是关于applicationDidEnterBackground 触发 popToViewController的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发简单的实现后台任务(诸如后台播放音乐,定时器,后台定位等)