0

我有一个可以通过 URI 方案从 Web 启动的应用程序,我已经在我的应用程序中注册了该应用程序。根据 URI,我打开不同的视图控制器(通过在 AppDelegate 中设置 rootViewController)。每个视图控制器在初始化时从服务器异步获取一些初始化数据。

我的问题是:如果我的服务器响应缓慢并且我退出应用程序并再次进入应用程序(导致新的视图控制器打开),那么第一个视图控制器仍然存在于后台并接收服务器对请求的响应它发送了。这可能会导致第一个视图控制器显示警报,即使该视图控制器不再是焦点。

可以通过在 viewDidDisappear: 方法中设置一个标志来解决这个问题。但是这种处理会弄乱代码,如果我能以某种方式从 AppDelegate 中停止视图控制器会更好。或者至少确保它只在前台显示警报视图。有没有办法做这些事情之一?

4

1 回答 1

0

我在另一个SO question中找到了可能的解决方案

 if (viewController.isViewLoaded && viewController.view.window) {
    // present alert view
 }

这避免了标志,但它仍然需要分散在显示警报视图的位置。

于 2013-01-28T07:30:41.100 回答