2010-06-11 40 views
0

短版:
我分配/初始化/保留在一個UIViewControllers viewDidLoad方法一個新的UIViewController,添加新的視圖以self.view。這通常有效,但它似乎弄亂了我的iPad應用程序的方向更改處理。添加UIViewController.view另一種觀點引起取向問題

較長版本:
我建立一個相當複雜的iPad應用,涉及到很多的意見和viewcontrollers。在調整設備方向後遇到一些困難後,我做了一個簡單的XCode項目來找出問題所在。首先,我已閱讀關於此主題的Apple Docs(一個名爲 "Why won't my UIViewController rotate with the device?"的小文檔),雖然我確實認爲它與列出的原因之一有關,但我並不確定如何解決它。

在我的測試項目中,我有一個appDelegate,一個rootViewController和一個帶有兩個自定義viewController的UISplitViewController。我使用rootViewController上的按鈕切換到splitViewController,並從那裏我可以使用一個按鈕切換回rootViewController。到目前爲止,一切都很好,即所有的視圖都可以適應設備的方向。

然而,在splitViewController的右側的viewController,我使用viewDidLoad方法初始化一些其他viewControllers,他們的觀點添加到其自己的看法:

self.newViewController = [[UIViewController中新]自動釋放]; [newViewController.view setBackgroundColor:[UIColor yellowColor]]; [self.view addSubview:newViewController.view];

這是事情出錯的地方。不知何故,在添加這個視圖後,調整到設備方向是很麻煩的。在啓動時一切都很好,在切換到splitViewController後,一切仍然正常,但只要切換回rootViewController就完成了。我試過(幾乎)所有關於保留和釋放viewcontroller的東西,但似乎沒有解決它。

從上面的代碼可以看出,我已經將newViewController聲明爲屬性,但是如果我不這樣做,也會發生同樣的情況。

我不應該添加一個ViewController的視圖到我自己的視圖嗎?這真的會搞亂我的項目,因爲我有很多viewControllers做各種事情。

任何幫助,將不勝感激......

+0

我有同樣的問題,實際上我的應用程序只能在橫向模式下工作,並有3個視圖,全部配置爲IB中的橫向。 第一個,自動加載正確的方向加載,但如果我嘗試添加一個子視圖,新視圖是在肖像模式。仍在挖掘。 – Cesar 2010-06-17 05:23:15

+0

可能與以下相關:http://stackoverflow.com/questions/2656088/uiview-added-with-incorrect-orientation/3059099#3059099 – Cesar 2010-06-17 05:31:00

回答

1

我有同樣的問題,通過接縫從父去除查看IB的「自動調整大小子視圖」選項解決。
然後選擇視圖:檢查器 - >屬性(第一個選項卡) - >繪圖。

0

我認爲正在發生的事情是您的新viewcontroller獲取自動轉移調用,並可能不處理它們。同時你的舊viewcontrollers和它的意見將不會得到自動調用的電話,並將卡在任何方向,他們在。

我不能告訴,但我想你想要做的是做一個UIView和添加它到你的舊視圖控制器,而不是製作一個UIVIewController並添加它的視圖。