2012-05-25 85 views
1

我的應用程序有一個UINavigationController,它不支持旋轉。不過,我想在導航控制器的頂部顯示一個應該支持旋轉的模式視圖控制器。這可能嗎?我嘗試在視圖控制器上覆蓋shouldAutorotateToInterfaceOrientation,該視圖控制器以模態方式顯示,但似乎不起作用。只支持模態UIViewController方向

+0

是否嘗試該[自我presentModalViewController:yourViewController動畫:YES>];這將在您的導航控制器的頂部。現在yourViewController的shouldAutorotateToInterfaceOrientation應該返回YES。 –

回答

1

我認爲,除了顯示模式地返回YES視圖控制器的shouldAutorotateToInterfaceOrientation,你的導航控制器的shouldAutorotateToInterfaceOrientation應該覆蓋,以返回YES當模式視圖控制器顯示,和NO否則。

0

你需要確保你的設備生成設備方位的通知(UIDeviceOrientationDidChangeNotification):

確保:

generatesDeviceOrientationNotifications設置爲true

從Apple文檔:

「的窗口對象執行與改變當前方向有關的許多工作,但是,它與根視圖控制器一起工作來確定方向是否改變應該會發生什麼,如果是的話,還應該調用哪些其他方法來應對變化。如果這個控制器是一個容器,它可能會依賴一個孩子來決定是否應該發生方向。「

所以,如果你的根視圖控制器(UINavigationController?)不支持旋轉,那麼這可能會被設置爲false,當你的應用程序啓動在這種情況下,你需要重新打開它在適當的時候:

UIDevice myDevice = [UIDevice currentDevice]; 
[myDevice beginGeneratingDeviceOrientationNotifications];