2013-07-18 132 views
3

我一直在閱讀幾篇文章,涉及切換窗口的rootViewController,有時會說在整個應用程序的生命週期中保持相同的rootViewController總比切換它好,而其他帖子與更改rootViewController在應用程序的某個點。我對此感到困惑,在Apple的文檔中我找不到有關這一點的任何建議。UIWindow的rootViewController注意事項

當應用中可能有不同的內容視圖控制器時,最佳做法應該是什麼?例如,假設你有,你想先顯示歡迎視圖在登錄或註冊(UINavigationController)選項卡式應用程序(UITabBarController):

1)具有固定rootViewController方法。我認爲您應該將UITabBarController設置爲rootViewController,因爲該應用程序的核心是選項卡,但如果需要用戶憑據,請在UITabBarController內設置UINavigationController,隱藏標籤欄,以推送歡迎視圖並導航到登錄/註冊視圖控制器。

2)方法切換rootViewController。首先,如果需要用戶憑證,請將UINavigationController設置爲rootViewController以顯示歡迎視圖並導航至登錄/註冊,並且一旦成功提供用戶憑證或成功創建帳戶,就將rootViewController切換爲UITabBarController以顯示核心選項卡應用程序。

如果最好的一般方法是根據需要切換rootViewController,那麼您會考慮哪些內存管理考慮事項?我是否需要在AppDelegate中有兩個strong屬性(UITabBarControllerUINavigationController)?那麼在切換rootViewController時,視圖控制器之間的轉換如何?它會平滑嗎?還是應該動畫化它?

在此先感謝

+2

這可能會關閉,因爲您的問題基本上是詢問人們的意見。我會選擇選項1.在需要用戶登錄時,根據根控制器將登錄屏幕顯示爲模式視圖控制器。在成功登錄時關閉它。無需切換根控制器。 – rmaddy

+0

@rmaddy謝謝。我認爲如果只有一個登錄視圖,將登錄視圖呈現在根的頂部將是最好的方式,但在這種情況下,我沒有唯一的登錄視圖,我有一個歡迎的視圖與兩個按鈕和一個歡迎視圖 - >登錄/註冊視圖導航層次結構,所以應該以模態方式呈現這樣的層次結構是最好的方式? – AppsDev

+0

@rmaddy有沒有進一步的想法解決AppsDev的評論?乾杯 –

回答

0

切換rootViewController的方法很好。首先,如果需要用戶憑據,請將UINavigationController設置爲rootViewController以顯示歡迎視圖並導航到登錄/註冊,並且一旦成功提供用戶憑證或成功創建帳戶,將rootViewController切換到UITabBarController以顯示核心選項卡應用程序

如果您想在tabbarcontroller中存儲用戶憑據。將它們存儲在您的主包中的NSUserDefaultsplist中或者在文檔目錄中創建。