2013-08-20 111 views
0

我正在開展一個項目並面臨一個問題。我的問題是,我正在做一個5.0和以上的項目,我的項目都是縱向視圖,但只有一個視圖同時具有視圖(橫向和縱向)我正在使用NavigationController自定義類,並檢查自定義導航類中的方向'IOS 6方向

- (NSUInteger)supportedInterfaceOrientations 
    { 
int interfaceOrientation = 0; 

if (self.viewControllers.count > 0) 
{ 
    id viewController; 
    for (viewController in self.viewControllers) 
    { 
     if ([viewController isKindOfClass:([CalenderViewController class])]) 
     { 
      interfaceOrientation = UIInterfaceOrientationMaskAll; 
     } 
     else 
     { 
      interfaceOrientation = UIInterfaceOrientationMaskPortrait; 
     } 
    } 
} 
return interfaceOrientation; 
}` 

CalenderViewController我認爲,支持這兩個觀點 此代碼工作得很好popview當我彈出一個視圖CalenderViewController,這工作得很好,但是當我在CalenderViewController推向一個新的視圖控制器,只有縱向視圖,則新viewcontroller保持在風景,而它應該是肖像模式。展望未來的解決方案謝謝

+1

'-preferredInterfaceOrientationForPresentation'改爲...? '-shouldAutorotate' ...? – holex

回答

0

在ca像這樣,你不應該在shouldAutorotate上返回NO。如果這樣做,支持的方向將不會被檢查,並且您的控制器將卡在最後使用的方向上。

取而代之,只需在shouldAutorotate上返回YES並在supportedInterfaceOrientations中指定單個方向(縱向),就像您已經這樣做了。

shouldAutorotate的的返回並不意味着只有當您希望控制器自由旋轉到其他方向時。在彈出或推送視圖不同的視圖後,可能需要控制器才能旋轉回其唯一支持的方向時,也應該使用它。

+0

但問題是,當我推動新視圖時,它顯示在橫向模式(半視圖),當我旋轉設備,然後完整的視圖顯示肖像的第一次。是否有任何解決方案,如果我在景觀和推新視圖強制推動景觀模式下的第二個視圖.. –

+0

我不知道我明白。你不是說只有其中一個觀點應該支持景觀嗎? –

+0

是的只有一個視圖支持風景 –