6

我有兩個UIViewControllers,「A」和「B」,其中「A」重寫shouldAutorotateToInterfaceOrientation爲UIInterfaceOrientationPortrait返回YES,而「B」返回YES爲所有方向。在我的例子中,「A」是根導航視圖控制器,然後使用pushViewController作爲「B」。之後,我將設備旋轉到橫向,成功自動旋轉「B」,然後彈出「B」(後退按鈕或通過popViewController)返回到「A」。popViewController不自動回到允許的方向

當靶向iPhone OS 3.1.3, 「A」 的預期收益爲縱向。當瞄準iPhone OS 3.2時,我有兩個副作用:

  1. 「A」橫向顯示。
  2. 儘管「A」現在顯示的導航欄不更新。導航欄仍顯示「B」的項目。只有在嘗試返回/彈出一次後,導航欄纔會生成動畫,以顯示「A」的項目。如果我不是試圖推動「B」再次回去,我要彈出兩次導航欄動畫顯示的項目爲「A」之前。在這些「中間流行音樂」期間,「A」的視圖仍然顯示。

在研究這個問題,我看到其他的答案提示手動執行的位移(的UIDevice setOrientation]或經改造的探討),但是這並不能幫助瞭解是什麼問題,特別是它爲什麼之間具有不同的行爲兩個操作系統。

所以我的問題是:必須在所有我UIViewControllers上的UINavigationController棧支持完全相同的方向的前進?如果沒有,那麼我需要做些什麼才能使它像OS 3.1.3一樣運行?

+1

這個問題也發生在iPhone OS 4.0。 – iamj4de 2010-07-08 12:32:58

+0

這種行爲是否在設備和模擬器上發生?由於模擬器錯誤,我有類似的問題,只發生在模擬器上。 – MrHen 2010-05-07 20:15:21

回答

1

這樣看來,在新的操作系統的要求在UINavigationController的堆棧中的所有UIViewControllers支持同一組取向。

0

我有同樣的問題,我在這個鏈接上找到了答案:UINavigationController navigation stack problems in landscape mode我的一個視圖控制器在shouldAutorotateToInterfaceOrientation沒有返回YES。

+0

謝謝你的回答。在我的情況下,「A」和「B」都是爲shouldAutorotateToInterfaceOrientation返回的值,「A」只爲肖像返回YES,因爲這是它唯一支持的值。我是否需要爲我不知道的視圖控制器返回YES(既不是A也不是B)? – JoeGaggler 2010-05-11 15:44:30

相關問題