2011-02-11 57 views
0

我遇到了橫向模式問題,我無法找到出路。基本上,我有一個標籤欄應用程序,並在第一個標籤中我有導航控制器。在此導航控制器中,第一個視圖包含帶有項目的表格,並且在點擊該項目之後,將會推送描述該項目的詳細視圖。我需要爲列表視圖和詳細視圖實現橫向模式,但對於列表視圖,我需要爲橫向模式使用不同的視圖控制器(通常是封面流等)。細節視圖只是改變方向,在這種情況下不需要使用替代視圖控制器。iPhone - 替代橫向視圖問題

根據Apple的Alternate Views示例,我試圖通過實現列表視圖控制器的模式視圖控制器來實現此行爲。當我處於列表視圖時(當我將設備轉換爲橫向模式時,正確顯示封面流視圖控制器)時,此工作正常。我顯示詳細視圖時出現問題。當我改變設備方向時,封面流程再次出現。我期望的是隻有在列表視圖出現在屏幕上時纔會顯示封面流程。無論VC當前位於NC堆棧上如何,模態視圖控制器總是可見。

在我看來,將模態VC作爲特定VC的橫向視圖呈現不適用於多個導航級別。

我也嘗試將橫向視圖作爲子視圖添加到視圖控制器視圖中。使用此解決方案時,我對導航級別沒有任何問題,但問題在於標籤欄未隱藏在橫向模式中。我需要隱藏標籤欄的封面流,這是通過呈現模態VC實現的。

我將不勝感激這個問題的任何幫助。

非常感謝!

回答

0

在詳細信息視圖控制器,你可以設置一個不同的看法完全使用這樣的事情(代碼從我最近的項目):

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toOrientation 
           duration:(NSTimeInterval)duration 
{ 
    if ([graphView superview]) { 
     if (toOrientation == UIInterfaceOrientationPortrait || 
      toOrientation == UIInterfaceOrientationPortraitUpsideDown) { 
      [graphView removeFromSuperview]; 
     } 
    } else { 
     if (toOrientation == UIInterfaceOrientationLandscapeLeft || 
      toOrientation == UIInterfaceOrientationLandscapeRight) { 
      [[self view] endEditing:YES]; 
      [[self view] addSubview:graphView]; 
     }  
    } 
} 

現在隱藏的TabBar當你在景觀(黑客攻擊的一位,但工程):

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{ 
    UIInterfaceOrientation toOrientation = self.interfaceOrientation; 

    if (self.tabBarController.view.subviews.count >= 2) 
    { 
     UIView *transView = [self.tabBarController.view.subviews objectAtIndex:0]; 
     UIView *tabBar = [self.tabBarController.view.subviews objectAtIndex:1]; 

     if(toOrientation == UIInterfaceOrientationLandscapeLeft || 
      toOrientation == UIInterfaceOrientationLandscapeRight) {          
      transView.frame = CGRectMake(0, 0, 480, 320); 
      tabBar.hidden = TRUE; 
     } 
     else 
     {        
      transView.frame = CGRectMake(0, 0, 320, 480);   
      tabBar.hidden = FALSE; 
     } 
    } 
} 

對於這個項目,我添加了一個名爲「graphView」的觀點,我想出現當且僅當在橫向模式下,然後我想的TabBar是隱。這聽起來與你之後的事情類似,我想。

我預見到的唯一潛在問題是,如果您在推送詳細視圖之前進入橫向模式,事情可能會變得不可靠。因此,您可能希望在列表視圖控制器中使用這些方法。這個問題從來沒有出現過,但是在我意識到它沒有實際意義之前,這是我想到的。