2013-02-28 115 views
2

我的应用程序使用导航控制器和一些根视图控制器在它的堆栈中。我需要一种方法将应用程序的状态重置为默认状态,即当我的应用程序中只有navigationController和它的根viewController时。例如,我做了一些后台数据请求到后端并得到响应,这说明我必须立即注销用户。在那一刻,让我们假设,用户已经在navigationController堆栈中打开了很多其他viewControllers,也许有些人用自己的navigationControllers呈现了viewController。所以我需要的是一种将用户从任何地方拉回到应用程序根视图控制器的方式。将应用程序重置为默认状态

我知道这是一个不好的用户体验,但它肯定比崩溃的应用程序更好,无论如何这应该是一种罕见的情况。

我不认为创建所有viewController之间的连锁反应,将逐一解雇他们,直到它到达我的根viewController对我来说是一个好主意。这在每个VC中都有相同的代码,我不想创建UIViewController的子类,并将它的子类从它们中分离出来以完成此操作。

有什么建议吗?

+0

我最终在所有viewControllers之间使用了一个链式反应,并将所有VC从UIViewController的自定义子类中分类,并实现了默认逻辑。我想这是无法避免的。 – DemoniacDeath 2013-03-01 22:09:27

回答

0

您可以使用[self.navigationController popToRootViewControllerAnimated:YES];从您的应用程序的任何视图转到您的主要rootview控制器。

+0

是的,但它会工作,如果我有一些呈现viewControllers? – DemoniacDeath 2013-02-28 09:53:21

+0

如果您在主视图中添加视图,请按照此链接,http://stackoverflow.com/questions/2156015/iphone-remove-all-subviews – 2013-02-28 09:58:21

+0

不,我不在我的主视图中添加视图。我在谈论viewControllers层次结构。比方说,我的导航堆栈中有3个viewController,最后一个是用自己的viewController堆栈呈现另一个模式导航控制器。所以,当我使用popToRootViewControllerAnimated:YES时,比方说,我的rootViewController,它会正常工作,而我仍然有我的视图控制器? – DemoniacDeath 2013-02-28 10:24:17

相关问题