当 Reachability 发生变化时连续关闭 ViewController
Posted
技术标签:
【中文标题】当 Reachability 发生变化时连续关闭 ViewController【英文标题】:Dismissing ViewControllers in succession when Reachability changes 【发布时间】:2012-09-17 22:51:23 【问题描述】:我正在编写一个游戏,用户只有在互联网连接有效的情况下才能玩。如果互联网状态发生变化,我想关闭所有 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];
不可能。
编辑:或者,我可以关闭并释放所有内容并从头开始,就像重新启动应用程序一样。这是更好的方法吗?我该怎么做?
谢谢。
【问题讨论】:
【参考方案1】:好的,我解决了。只需调用
[self dismissModalViewControllerAnimated:NO];
在 loginViewController 上关闭主视图控制器和堆栈上的所有控制器。
【讨论】:
通知是在实际上应该触发的时候不触发,还是在不应该触发的时候不必要地触发?对我来说,前者仍然可以管理,但后者会破坏应用体验。 both..Id 进入细节,但它往往会引起认为它有效的人的激烈战争,它没有,搜索所以有很多关于可达性的讨论。 已弃用...改用[self dismissViewControllerAnimated:NO completion:nil];
。以上是关于当 Reachability 发生变化时连续关闭 ViewController的主要内容,如果未能解决你的问题,请参考以下文章