2013-02-28 30 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

相關問題