2012-01-11 38 views
1

我開發的iPad應用,我需要創建一個UIView,就是始終在頂部對於其他意見。UIView的側邊欄總在最前面

A爲面積(認爲它作爲一種工具條),我需要建立一個UIViewController其觀點始終保持在最前面。 B代替UIViewController(以其視圖)可以改變的內容區域:取決於幾個按鈕操作(在A的視圖內),可以移除當前可見內容(在這種情況下爲控制器B及其視圖)並顯示其他控制器(C,D,E等)和他們的觀點。

我創造了我的應用程序的所有元素,但我有問題,維持A的上俯視圖,並在同一時間,實現用於dinamcally更改內容區域的邏輯。作爲要求,我需要A始終與B重疊。換句話說,B(左側部分)的一部分總是在A的區域下.B總是延伸整個設備屏幕。

你能給我一些建議嗎?

我做了兩個配置,但我遇到了問題。

第一配置

在第一個,我創建對於A的UIViewController(稱爲SideBarController)。我添加了SideBarController查看到UIWindow(在應用程序委託內)。然後,我爲B創建了一個UIViewController(稱爲HomeViewController),並將其添加爲我的應用程序的rootViewController

這種解決方案可能是一個有效的,因爲我可以通過我的應用程序委託dinamically更改內容區域(設置新的rootViewController),但SideBarController當前visble視圖下始終保持。

其次配置

在第二個,我創建了一個UIViewController(稱爲MainViewController),我增加一條,作爲一個rootViewController我的應用程序。然後內MainViewController我創建對於A的UIViewController(稱爲SideBarController)和I加入SideBarController視圖MainViewController。然後填充內容區域,爲B創建一個UIViewController(稱爲HomeViewController)並將其添加到MainViewController

側邊欄始終保持在最前面,但我有困難的內MainViewController動態改變內容區域。如何訪問內容區域並更改它?

注意我知道關於UIKit上的標準組件,但我需要實現這樣的解決方案,因爲用戶規範。

回答

1

我會通過努力實現在UIPopoverController側邊欄開始。它的設計非常適合這類問題,並且可以對其進行廣泛的定製以滿足您的用戶界面需求。如果UIPopoverController導致您遇到某種問題,我會將邊欄放在其自己的UIWindow中,並將其懸浮在主窗口上方。

編輯

個人而言,我會去爲自己酥料餅,因爲它更對這種問題的建造。我想到的另一個想法,我過去使用的是UIView,您直接添加到UIWindow(從任何視圖都可以得到主要的[view window])。請記住,UIWindow只是一種特殊的UIView。這個問題和UIWindow解決方案是,你將不得不做自己的旋轉邏輯,這可能比聽起來如果你有自動旋轉更棘手。如果你可以使用它,UIPopoverController可以非常乾淨地自動處理所有這些。

如果你追求UIWindow看到的視圖編程指南的窗口部分:http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingWindows/CreatingWindows.html

+0

謝謝您的答覆。你能否給我提供第二種解決方案的建議?如何將側邊欄放入另一個「UIWindow」?我認爲第一個可能很複雜。謝謝。 – 2012-01-11 14:04:32

+0

謝謝。我不知道如何遵循。也許'UIPopoverController'可能是正確的。在我看來,這個問題可能是不可能定製這個控制器的外觀。例如,在iOS 4中,無法自定義邊框。我不知道iOS 5定製是否發生了變化。您是否有任何代碼可以分享您過去使用的解決方案?謝謝。 – 2012-01-11 19:04:34

+0

你是對的。我在談論的部分是在iOS 5('popoverBackgroundViewClass')中添加的。這給你留下了一個附加到頂層的窗口或視圖。我會在'[[[view window] rootViewController]視圖]中添加一個'UIView',看看它是否適合你。如果不是,直接將它添加到'[查看窗口]'。 – 2012-01-11 20:26:19