2012-09-17 43 views
2

我正在編寫一個遊戲,用戶只有在有活動的Internet連接時才能玩遊戲。如果互聯網狀態發生變化,我想關閉所有ViewController並返回到登錄屏幕。這裏的層次:當可達性發生變化時連續解除ViewControllers

我的應用代表由顯示LoginViewController:

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

在這裏,用戶登錄在登錄時我檢查連接和處理錯誤。如果登錄成功loginViewController呈現mainViewController使用

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

然後mainViewController呈現其它控制器,其可以呈現其他控制器等等。禮物和解僱日常工作正常。

現在,如果可達性狀態發生變化,我想顯示警報並強制應用程序返回到登錄屏幕。我知道如何傾聽這些通知並採取恰當的行動。這是有據可查的:)

我如何解僱所有視圖控制器,直到我登陸登錄屏幕?我是否需要在所有視圖控制器中收聽通知並單獨解除它們?有什麼方法在父級(如應用程序委託)中捕獲通知,並從那裏解除所有視圖控制器(沒有事先引用所有視圖控制器)?

很顯然,我沒有使用navigationController所以

[self.navigationController popToRootViewControllerAnimated:NO]; 

是不可能的。

編輯:或者,我可以關閉並釋放所有內容並從頭開始,就像應用程序啓動時一樣。這是一個更好的方法嗎?我到底該怎麼做?

謝謝。

回答

2

好的我解決了它。簡單地調用

[self dismissModalViewControllerAnimated:NO]; 
上loginViewController

駁回主視圖控制器和上面的堆棧上的所有控制器。

+0

如果可達性確實有效,它會更好。 –

+0

事實上它是否應該啓動通知,或者在不應該引發不必要的時候啓動通知?對我而言,前者仍然可以管理,但後者會破壞應用程序體驗。 –

+0

這兩個..Id進入具體細節,但它往往會導致火焰戰爭的人認爲它的工作原理,它沒有,搜索因此,有許多關於可達性的討論。 –

相關問題