当应用程序在后台运行时,iOS 7.x上的UINavigationController推送/弹出错误
我已将UINavigationController设置为主窗口的rootViewController 我从代码中推送和弹出ViewController(因此推送和弹出不会由用户交互触发) 当我在应用程序处于前景时做这件事,一切都会正常工作 但是当我在后台运行应用程序时,不会显示正确的ViewController 此问题仅在iOS 7.x上重现 可在此链接下找到示例项目: 要重现这个问题,只需将应用程序放在后台,等待12秒,然后将应用程序返回前台:当您使用UINavigationBar的“后退”按钮导航时,不会显示navigationController的根视图(正如它应该显示的那样):背景仍然是绿色,而不是黄色(navigationController的rootViewController的背景为黄色) 当应用程序位于前台时,点击标签为“aaaaa”的按钮进行相同的导航,但完成后,GUI处于正确状态 简言之: 当应用程序位于前台时,此选项起作用,但当应用程序位于后台时,此选项不起作用:当应用程序在后台运行时,iOS 7.x上的UINavigationController推送/弹出错误,ios,uinavigationcontroller,pushviewcontroller,poptoviewcontroller,Ios,Uinavigationcontroller,Pushviewcontroller,Poptoviewcontroller,我已将UINavigationController设置为主窗口的rootViewController 我从代码中推送和弹出ViewController(因此推送和弹出不会由用户交互触发) 当我在应用程序处于前景时做这件事,一切都会正常工作 但是当我在后台运行应用程序时,不会显示正确的ViewController 此问题仅在iOS 7.x上重现 可在此链接下找到示例项目: 要重现这个问题,只需将应用程序放在后台,等待12秒,然后将应用程序返回前台:当您使用UINavigationBar的“后退”按
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秒钟后推/弹出/推同一个控制器?你确定没有其他方法可以做同样的事情吗?