2

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

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

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

在这里,用户登录。登录时,我检查连接并处理错误。如果登录成功 loginViewController 使用 mainViewController

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

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

现在,如果可达性状态发生变化,我想显示警报并强制应用返回登录屏幕。我知道如何收听这些通知并采取适当的行动。这是有据可查的:)

如何关闭所有视图控制器,直到我回到登录屏幕?我是否需要在所有视图控制器中收听通知并分别关闭它们?有没有办法在父级(如应用程序委托)中捕获通知并从那里解除所有视图控制器(而不事先持有对所有视图控制器的引用)?

显然,我没有使用 navigationController 所以

[self.navigationController popToRootViewControllerAnimated:NO];

不可能。

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

谢谢你。

4

1 回答 1

2

好的,我解决了。只需调用

[self dismissModalViewControllerAnimated:NO];

在 loginViewController 上关闭主视图控制器和堆栈上的所有控制器。

于 2012-09-18T00:12:25.257 回答