2011-11-01 46 views
0

我有一個故事板設置爲這樣:退出時,我是否必須展開故事板中的「堆疊」?

TitleScreen
(推)
LoginScreen
(CustomSegue)
UITabBarViewController(根這裏的觀點是一個UINavigationController)
(模態)
SettingsView
( CustomSegue)
TitleScreen

所以我的目標是讓SettingsView中的「Logout」按鈕,它將使用戶回到TitleScreen

但是,當我嘗試此操作後,註銷後,TitleScreen不會再轉換到LoginScreen了。它在啓動應用程序時起作用,但在「註銷」後不起作用。

這是否意味着,我必須以某種方式展開Storyboard'stack'?如果是這樣,那麼如何進行1次轉換呢?

想法:通過NSNotificationCenterAppDelegate發送通知,以重新創建rootViewControler

以前有人做過這個嗎?

+0

嚮應用程序委託發送通知確實有效。 應用程序委託必須首先解除rootViewController。完成後,用Storyboard的初始視圖控制器重新初始化它。 謝謝。 – Paul

回答

0

如果是我,我會將導航控制器放在設計的開始處,並使用popToRootViewController:animated:返回到根目錄。如果您不希望導航欄顯示早期視圖(如登錄頁面),則始終可以選擇隱藏它。

我在我的tutorial here中做了類似的事情,我在設計的頂部有兩個製表符的導航控制器,除了我沒有隱藏任何東西,因爲它只是用於教程。

+0

我的確在想這個,但很快就意識到'UINavigationController'永遠不應該包含'UITabBarController'。由於'UITabBarController'的一個孩子可能是'UINavigationController'。 – Paul

+0

不,我也有這個層次結構頂部的標籤欄和導航控制器。我在我的教程中做了類似的事情。我已經編輯了我的答案 – Simon

0

我會在這裏重新考慮你的故事板佈局。標題屏幕和登錄屏幕基本上只是您的應用程序主要部分UITabBarController上的模式視圖。我將UITabBarController作爲故事板中的初始視圖控制器,然後在應用程序完成啓動後,以模態方式有條件地呈現標題視圖/登錄屏幕。

現在,使用這種設計,顯示登錄屏幕就像執行任何模態輪詢一樣簡單。您可能想要考慮使用設置視圖控制器中的委派來通知呈現視圖控制器用戶註銷並且應該呈現登錄視圖控制器。

+0

我嘗試過這個,但是我意識到'UITabBarController'中視圖的實現不會那麼幹淨,因爲它現在必須知道「登錄前狀態」。 – Paul

+0

至於從設置到模式的父母的代表團,我更喜歡使用'NSNotificationCenter'。它基本上是EventBus模式,更乾淨,更符合我的口味。 – Paul

相關問題