2010-11-04 38 views
3

無論我用哪種方式打開iPad,viewcontroller.interfaceOrientation總是返回1.任何人都知道這是爲什麼?UIViewController interfaceOrientation總是相同的值

+0

這聽起來很蠢,但它可能是定向鎖定按鈕上? :) – fhj 2010-11-04 04:43:30

+0

這實際上是一個偉大的想法!答案是否定的,因爲這是4.2 Gold Master,按鈕無關緊要,而且軟件按鈕也處於打開狀態 - 用戶界面肯定在旋轉。但有可能這是一個錯誤? – johnrubythecat 2010-11-04 14:13:23

+0

可能會晚點兒:你解決了嗎?我有同樣的問題。 – IssamTP 2011-02-02 17:33:30

回答

1

它完全取決於您的視圖控制器在視圖中的位置。

UIWindow應該只有一個鏈接到它的viewcontroller(通常是一個rootViewController),這是響應旋轉的viewcontroller。 如果rootViewController有多個子視圖控制器,則需要檢測rootViewController中的旋轉並將其傳遞給相關的視圖控制器。

在聯機文檔中有關於它的非常好的編程指南。如果我找到鏈接,我會發布它。 搜索我以前的帖子,我被指向同一方向。

+1

MightyLeader:「如果rootViewController有多個子視圖控制器,則需要檢測rootViewController中的旋轉並將其傳遞給相關的視圖控制器。」我有這樣的等級。一個VC被添加到窗口中,他有多個VC,他必須照顧。問題在於rootViewController的interfaceOrientation始終具有正確的值,但子項的值不正確。我想問你,你如何「通過」到相關的viewController – krasnyk 2011-05-11 14:58:36

+0

我同意krasnyk。 interfaceOrientation屬性是隻讀的,所以你不能在兒童中改變它 – user102008 2011-07-07 22:44:09

+0

嘿,這是一段時間,因爲我回答了,我想記住的細節,但首先去的UIViewControllers的Apple編程指南和查看heirarchy。這裏只是解釋一下。我*認爲*您構建您的層次結構如下所示...將rootviewcontrollers視圖添加爲UIWindow的子視圖,然後將您的多個子ViewController視圖添加爲rootviewcontrollers視圖的子視圖。然後確保每個視圖控制器都設置了自動旋轉方法,以允許您想要支持的各種方向。 – Cocoadelica 2011-08-28 10:11:39

0

這個問題似乎在iOS 6.0中消失。

一種解決方法看起來是這樣的:

- (UIInterfaceOrientation)interfaceOrientation; 
{ 
    UIViewController *rootViewController = self.view.window.rootViewController; 
    if (rootViewController) { 
     return rootViewController.interfaceOrientation; 
    } 
    return [super interfaceOrientation]; 
}