如何停止ViewController

时间:2013-01-28 07:07:47

标签: objective-c ios5 uiviewcontroller

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

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

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

1 个答案:

答案 0 :(得分:0)

我在另一个SO question

中找到了可能的解决方案
 if (viewController.isViewLoaded && viewController.view.window) {
    // present alert view
 }

这可以避免使用标记,但仍需要在显示警报视图的地方展开。