0

我在我的MainWindow.xib中有一個UITabBarController。如何強制UITabBarController中的視圖的水平方向?

每個選項卡包含一個具有UITableViewController的UINavigationController。

當我按下UITableViewController中的按鈕時,我想將視圖控制器以水平方向推到導航堆棧上。

我已經過騎在的UITableViewController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations. 
    return YES; 
} 

以下但推視圖控制器不在水平方向出現(在XIB它被定義爲橫向)。

我怎樣才能在水平方向推動它?

+0

覆蓋該方法不會強制自動旋轉。檢查http://stackoverflow.com/questions/6492085/iphone-development-viewcontroller-portrait-to-landscape-no-autorotate/6492166#comment-7634401 – Saphrosit

回答

1

自轉的UITabBarControllerUINavigationController已經得到了一些限制:

  1. 爲的UITabBarController,自轉只會工作,如果所有的標籤欄支持自動旋轉控制器的;

  2. 對於UINavigationController,只有在UINavigationController中的rootViewController支持它時,自動旋轉纔會起作用。

一旦你保證,這個條件都滿足,那麼你可以嘗試把你的UITableViewController已經確定了其shouldAutorotateToInterfaceOrientation這樣的:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return (interfaceOrientation == UIInterfaceOrientationLanscape); 
} 

編輯:

你的所有UIViewControllers的應具有此定義shouldAutorotateToInterfaceOrientation

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    return YES; 
} 

除了你想強制的景觀,應該有上面給出的定義。

另請參見this thread的最後一篇文章,以正確實現UITabBarController的shouldAutorotateToInterfaceOrientation。

+0

我的UITabBarController是MainWindow.xib的一部分,所以它在AppDelegate中定義。 UITabbarController包含一個UINavigationController,它包含一個UITableViewController。我已經在所有VC中實現了shouldAutoRotate,但仍然沒有運氣。 –

+0

問題除了推動您的橫向視圖:當您旋轉設備時,視圖是否自動旋轉?如果沒有,那麼你必須檢查你的代碼中的東西。具體來說,MainWindows UITabBarController還需要定義其'shouldAutorotateToInterfaceOrientation'。 – sergio

+0

旋轉設備時,它不會自動旋轉。我在你的appdelegate中添加了你的方法(這是UITabBarController連接的地方)。沒有運氣。 –

0

您需要更改viewWillAppear中法狀態條方向和viewWillDisappear等也恢復的方法

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations. 
    return (UIInterfaceOrientationLandscapeRight or UIInterfaceOrientationLandscapeLeft); 
} 
+0

在哪個視圖控制器我應該執行此? –

+0

你想要的方向不同。就像你想在景觀viewContoller1然後應用代碼viewController1 –

+0

我試過,它不工作不幸。 VC1推VC3推VC3(我希望這是風景)。所有人都必須執行你的代碼,我已經完成了。 –

0

你的做法似乎是合乎邏輯只返回橫向。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || 
      interfaceOrientation == UIInterfaceOrientationLandscapeRight); 
} 

這種方法的思路是返回YES爲你的視圖控制器支持方向:但是,你在想成爲唯一的風景線推視圖控制器嘗試。

+0

不起作用。它仍然以肖像出現。 –

相關問題