2012-02-19 42 views
0

我已閱讀了很多有關此問題的問題,但仍無法找到解決此問題的適當解決方案。我有一個新聞應用程序,在啓動畫面上啓動(要獲取新聞提要並緩存它們),然後切換到主屏幕,這是新聞文章的混搭。你可以通過點擊文章,部分,畫廊,視頻等從這個屏幕導航到許多其他屏幕......我有一個固定的頁眉和頁腳,我決定繼承一個主UIViewController並將它們放在那裏(我'在我的其他UIViewControllers中繼承這個UIViewController)切換UIViewControlles - Ambigious

我讀過,最好的方法是讓多個視圖控制器控制我的應用程序的特定部分。不過,我仍然對如何正確和負責任地進行切換感到困惑。我試過故事板塞格斯,但我遇到了兩個問題:

  1. 我需要創建很多塞格斯的,因爲你幾乎可以從 任何屏幕跳轉到任何其他屏幕
  2. 的塞格斯將不保留的狀態一旦你跳到另一個UIViewController,一旦你回去它被重置爲它的初始狀態 。

我也讀過關於當前的視圖控制器,你可以將你的視圖作爲當前控制器上的模態。然而,你需要做很多事情,而且我對內存消耗問題有點害怕。如何創建一個多視圖應用程序沒有應用程序視圖hiearchy(UINavigationController/UITabController/etc ...)通常我想聲明所有我的視圖控制器在開始時,只是在它們之間切換爲需要(當我第一次需要一個視圖,我會初始化)任何人嘗試過類似的東西之前?

非常感謝。

編輯:謝謝你的回覆,我出去看了關於UIViewController遏制的WwDC會議,並幫助我瞭解如何實現自定義UIViewController容器。然而,仍然有一些我無法理解的東西。

當我創建一個自定義的UIViewController容器時,我需要使用addChildViewController爲其添加子項,並且會在我的子UIViewController上觸發willMoveToParentController事件。

然後我使用[self.view addSubview ...]將子控制器子視圖添加到容器視圖中,但是這隻會加載視圖並且不會將它們鏈接到我在子UIViewController內創建的事件。

我應該用addSubview以外的東西嗎?或者我應該使用單獨的UIView類來連接我的事件?

+0

請檢查我對這個問題的回答http://stackoverflow.com/questions/9318232/ ..它可能會幫助你。 – 2012-02-19 12:19:38

+0

謝謝Malek,在這種情況下如何處理過渡? – ravenstone 2012-02-19 12:26:57

+0

例如..'UIViewController * vc = [appDelegate.controllersArr objectAtIndex:0] vc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;' – 2012-02-19 12:45:04

回答

0

如果您使用新的iOS 5,我建議您閱讀實施容器視圖控制器部分UIViewController Class Reference

以這種方式,您可以創建一種容器控制器來管理您的其他視圖控制器。關鍵方面是你可以實現你自己的控制器和切換動畫。

此模式可應用於故事板和非故事板應用程序。我更喜歡第二種方法。

關於內存消耗,如果您以正確方式管理內容,則不必擔心。也許,如果您已經緩存了數據,則可以從視圖分層結構中添加或刪除當前顯示的控制器的view(但將控制器作爲主控制器的子組件)或刪除這兩者。

希望它有幫助。

+0

我在觀看有關視圖遏制和層次結構的WWDC 2011會話後創建了自定義UIViewController容器。非常感謝。 – ravenstone 2012-03-04 19:17:45

+0

不客氣。 – 2012-03-04 22:54:07