当可达性改变时,连续解除ViewControllers

时间:2012-09-17 22:51:24

标签: ios uiviewcontroller reachability dismiss

我正在编写一个游戏,用户只能在有活跃的互联网连接时才能玩游戏。如果互联网状态发生变化,我想解雇所有ViewControllers并返回登录界面。这是层次结构:

My App Delegate通过以下方式显示LoginViewController:

self.window.rootViewController = loginViewController;
[self.window makeKeyAndVisible];

此处用户登录。登录时,我检查连接并处理错误。如果登录成功,loginViewController将使用

呈现mainViewController
[self presentModalViewController:self.mainViewController animated:YES];

然后mainViewController呈现其他控制器,可以呈现其他控制器等。目前和解雇的例行工作正常。

现在,如果Reachability状态发生变化,我想显示一条警告并强制该应用返回登录界面。我知道如何倾听这些通知并采取适当的行动。有充分证据证明:)

在登陆登录界面之前,如何解除所有视图控制器?我是否需要在所有视图控制器中收听通知并单独解除它们?有没有办法在父母(如app委托)中捕获通知并从那里解雇所有视图控制器(事先没有保留对所有视图控制器的引用)?

显然,我没有使用navigationController,所以

[self.navigationController popToRootViewControllerAnimated:NO];

是不可能的。

编辑:或者,我可以解雇并释放所有内容并从头开始,就像应用程序是新启动的一样。这是一种更好的方法吗?我究竟该怎么做?

谢谢。

1 个答案:

答案 0 :(得分:2)

好的,我解决了。只需致电

[self dismissModalViewControllerAnimated:NO];
loginViewController上的

取消了主视图控制器和堆栈上面的所有控制器。