2013-02-08 30 views
0

當我想要在使用TabBarController的應用中將LoginViewController作爲「ModalViewController」呈現時,我正在尋找有關最佳實踐方法的反饋。如何在iOS應用程序中使用TabBarController顯示ModalViewController?

的情況是這樣的: - 應用支持與登錄/註銷功能 用戶會話 - 當應用程序被啓動它試圖全自動登錄並直接顯示TabBarController或LoginViewController(顯示爲ModalViewController以使解僱動畫登錄時) - 應用程序有一個帶有多個選項卡的TabBarController。 - 一個視圖控制器呈現在用戶的狀態每次檢查 - 如果用戶沒有在登錄功能的ModalViewController記錄應提交 - 如果用戶手動註銷同樣ModalViewController應提交

我有試圖想出幾種不同的設計來處理這個問題,沒有人覺得完全「正確」。我曾在一個項目中使用替代應用程序默認UIWindow的子類UIWindow進行處理。子類然後監聽不同的通知,例如「UserLoggedInSuccessfully」,「UserLoggedOut」等,以處理ModalViewController的呈現。

還有其他解決方案嗎?我很感謝這種解決方案的任何投入和經驗。

+1

爲什麼在切換選項卡時檢查用戶是否已登錄?如果需要登錄才能使用該應用,請在啓動時登錄。當應用程序退出(或者如果需要時進入後臺),您可以自動登出用戶。 – rdelmar 2013-02-08 22:24:43

+0

是的,我想在切換選項卡時不需要檢查,因爲無論如何它將在所有API請求中處理。好點子。 – oehman 2013-02-09 21:07:31

回答

1

有不同的方案來解決這個問題,你可以試試這些辦法,但第一個是推薦的方法,我會說,

  1. 你可以讓你HomeViewController這將是作爲默認的TabBarController第一片每次打開並分別製作LoginViewController,在AppDelegate中,您可以檢查登錄會話didFinishLaunchingWithOptions,如果會話無效,則將LoginViewController顯示爲ModalViewController,否則將顯示TabBarController幷包含所有選項卡。

  2. 替代的方法是在標籤的所有控制器,但是當你提出LoginViewController,用戶登錄後,添加所有的控制器在MutbaleArray並刪除當前對象,它是LoginViewController。用戶登錄後,將信息保存在鑰匙串中,這樣用戶就不必一次又一次地登錄,這樣,每次用戶嘗試登出時都可以避免顯示LoginViewController,然後將LoginViewController添加到數組中然後在LoginViewController之後添加所有TabBarController對象。

0

你可以做到以下幾點, 當用戶打開你必須表明姬的loginviewcontroller爲RootViewController的那麼當用戶登錄成功後,你必須做出tabbarviewcontroller爲RootViewController的應用程序。 然後每當用戶運行應用程序,你必須檢查他是否有有效的會話,你將製作一個tabar作爲根 如果會話過期,當你在tabbar上,你必須改變你的根視圖控制器應用代理登錄

相關問題