我正在编写一款游戏,用户只有在有事件的互联网连接时才能玩。如果互联网状态发生变化,我想关闭所有 ViewController 并返回登录屏幕。这是层次结构:
我的应用程序委托(delegate)通过以下方式显示 LoginViewController:
self.window.rootViewController = loginViewController;
[self.window makeKeyAndVisible];
用户在此登录。登录时,我检查连接并处理错误。如果登录成功,loginViewController 会使用
呈现 mainViewController[self presentModalViewController:self.mainViewController animated:YES];
然后mainViewController呈现其他 Controller ,可以呈现其他 Controller 等等。当前和解雇例程工作正常。
现在,如果可达性状态发生变化,我想显示警报并强制应用程序返回登录屏幕。我知道如何倾听这些通知并采取适当的行动。这是有据可查的:)
如何关闭所有 View Controller ,直到返回登录屏幕?我是否需要监听所有 View Controller 中的通知并分别关闭它们?有没有什么方法可以捕获父级(如应用程序委托(delegate))中的通知并从那里解除所有 View Controller (无需事先保留对所有 View Controller 的引用)?
显然,我没有使用 navigationController 所以
[self.navigationController popToRootViewControllerAnimated:NO];
不可能。
编辑:或者,我可以忽略并释放所有内容并从头开始,就像应用程序是新启动的一样。这是更好的方法吗?我具体该怎么做?
谢谢。
最佳答案
好的,我解决了。只需调用
[self dismissModalViewControllerAnimated:NO];
在loginViewController上关闭主视图 Controller 和堆栈上上面的所有 Controller 。
关于ios - 当 Reachability 发生变化时,连续关闭 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12468142/