2010-08-21 26 views
1

我的應用程序有4個選項卡。所有視圖控制器都支持旋轉,並且在旋轉設備時的確可以旋轉。對於其中一個視圖控制器,我需要在旋轉時重新定位一些子視圖。我在該視圖控制器的willRotateToInterfaceOrientation中執行此操作,並且它工作正常。iphone - TabBarController旋轉問題

當我切換到不同的選項卡,然後旋轉設備,然後返回到原始選項卡時,問題就出現了。它顯然還沒有收到旋轉通知,因爲willRotateToInterfaceOrientation尚未被調用。所以看起來好像只有「活動」視圖控制器得到通知設備已經旋轉。

問題:如何讓所有視圖控制器(由TabBarController控制)旋轉?

回答

0

不幸的是,這是iOS 3.x中的一個錯誤。它在iOS 4.x中運行正常。我已經看到了手動跟蹤方向更改的應用程序,然後爲非活動的viewcontrollers手動執行輪換。吮吸。

+0

嗯。這是一款iPad應用程序,因此我正在iPad模擬器3.2上進行測試。你是說,一旦我可以用iPad 4.0構建,它會神奇地開始工作? – sol 2010-08-21 00:36:42

+0

它大概會在4.0+以上的iPad上工作;沒有升級的用戶當然仍然會得到這個錯誤。 – 2010-08-21 01:22:29

+0

我在4.3.5上面對同樣的問題。我不確定這是一個iOS 3.x錯誤。使用自動調整掩碼正確旋轉的視圖可以在從製表符到標籤的情況下正常工作,但是如果需要自定義旋轉代碼,我發現沒有自動調用旋轉方法,並且您有兩個選項,通過NSNotifications監視旋轉更改,或者在viewWillAppear上執行黑客攻擊。還有其他建議嗎? – wasabi 2011-08-27 03:19:02

0

翻閱iOS 3.2文檔以確保其正常工作,UITabBarController中有viewControllers屬性。嘗試是這樣的:

for (UIViewController * viewController in tabBarController) { 
    // Do stuff here with each 'viewController'. 
} 

我建議你做的UIViewController-shouldAutorotateToInterfaceOrientation:法的東西,但你可能在你計劃實現轉動的另一種方式。

0

您還應該檢查控制器的viewWillAppear方法中的界面方向,它的子視圖框架正在更改。因爲當您移動到新選項卡並旋轉設備,現在當您點擊另一個選項卡時,我們會調用viewWillAppear方法在那裏你可以相應地改變幀。 我也面臨同樣的問題,我整理出使用這種方法