Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当应用程序在后台运行时,iOS 7.x上的UINavigationController推送/弹出错误_Ios_Uinavigationcontroller_Pushviewcontroller_Poptoviewcontroller - Fatal编程技术网

当应用程序在后台运行时,iOS 7.x上的UINavigationController推送/弹出错误

当应用程序在后台运行时,iOS 7.x上的UINavigationController推送/弹出错误,ios,uinavigationcontroller,pushviewcontroller,poptoviewcontroller,Ios,Uinavigationcontroller,Pushviewcontroller,Poptoviewcontroller,我已将UINavigationController设置为主窗口的rootViewController 我从代码中推送和弹出ViewController(因此推送和弹出不会由用户交互触发) 当我在应用程序处于前景时做这件事,一切都会正常工作 但是当我在后台运行应用程序时,不会显示正确的ViewController 此问题仅在iOS 7.x上重现 可在此链接下找到示例项目: 要重现这个问题,只需将应用程序放在后台,等待12秒,然后将应用程序返回前台:当您使用UINavigationBar的“后退”按

我已将UINavigationController设置为主窗口的rootViewController

我从代码中推送和弹出ViewController(因此推送和弹出不会由用户交互触发)

当我在应用程序处于前景时做这件事,一切都会正常工作

但是当我在后台运行应用程序时,不会显示正确的ViewController

此问题仅在iOS 7.x上重现

可在此链接下找到示例项目:

要重现这个问题,只需将应用程序放在后台,等待12秒,然后将应用程序返回前台:当您使用UINavigationBar的“后退”按钮导航时,不会显示navigationController的根视图(正如它应该显示的那样):背景仍然是绿色,而不是黄色(navigationController的rootViewController的背景为黄色)

当应用程序位于前台时,点击标签为“aaaaa”的按钮进行相同的导航,但完成后,GUI处于正确状态

简言之: 当应用程序位于前台时,此选项起作用,但当应用程序位于后台时,此选项不起作用:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    NSLog(@"pushViewController!");
    [self pushViewController:[[BViewController alloc] init] animated:YES];

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        [self popToRootViewControllerAnimated:YES];

        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
            [self pushViewController:[[BViewController alloc] init] animated:YES];
        });
    });
});
你知道这个问题怎么解决吗


提前感谢!

我找到了一个解决方案:我使用此处发布的代码实现了相同的导航动画:。使用该代码无法再现问题!

请发布一些代码。在后台执行推/弹出操作不是一个好主意。为什么不在应用程序进入前台时执行此操作?我刚刚添加了一个指向的链接一个可以从Dropbox下载的示例项目,我强调了代码中最重要的部分,可以用来重现bug。我已经尝试在应用程序位于后台时实现排队导航,并在应用程序返回前台时执行导航,但由于某种原因,问题仍然存在可生产性…我将用该修复程序更新示例代码…只是一个简单的问题,为什么在3秒钟后推/弹出/推同一个控制器?你确定没有其他方法可以做同样的事情吗?