2011-06-22 221 views
0

我的應用程序中有兩個UIViewController。我切換它們之間的視圖。一個是隱藏的另一個不是。一切都很好,除了方向問題。在這兩個的UIViewController 我重寫此方法UIView旋轉問題

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

,並設置方向爲橫向兩個XIB文件。

在*** Delegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
{ 
    ....... 
    viewController.view.hidden=TRUE; 

    [self.window addSubview:viewController.view]; 

    [self.window addSubview:menuController.view]; 

    ..... 
} 

如果我添加viewController.view第一viewController.view是景觀位置,它可以旋轉到landscapeLeft或landscapeRight。但menuController.view仍然是縱向位置,視圖根本無法旋轉。

如果我先添加menuController.view的情況是相反的。

爲什麼發生這種情況?如何解決這個問題?我的應用程序快完成了。有沒有簡單的方法來解決這個問題,而不需要對我的代碼進行大的修改。

任何建議表示讚賞。非常感謝你!

回答

0

哪個視圖控制器被定義爲用於Window的rootViewController?當設備旋轉時,AFAIK,被操縱的視圖是rootViewController.view處的視圖。

你可以檢查這個把NSLog放在每個視圖控制器的shouldAutorotateToInterfaceOrientation。如果我是對的,你會看到只有一個調用這個函數。

定義哪個視圖控制器應該是根,並以模態方式呈現另一個視圖控制器,或使用導航控制器。

希望它有幫助!

+0

致:Gonzalo Larralde感謝loooot。我很瞭解你在說什麼。在我的應用程序中沒有定義rootViewController。所以我嘗試了你的方式。 menuController被定義爲rootViewController,viewController被添加到menuController.view作爲子視圖。 menuController顯示爲我所期望的,但viewController.view只是變爲空白。或者我應該將viewController作爲一個實例添加到menuController類中,而不是將兩個控制器都添加到Delegate中。這樣我可能需要更改很多我不想要的代碼。 – Lynn

+0

它應該如何工作? menuController和viewController應該同時顯示嗎?在這種情況下,指定哪些視圖是主視圖控制器,視圖控制器應始終保持可見。在這種情況下,我會在保留給主視圖控制器的menuView中定義一個視圖/滾動視圖,然後在menuController內部定義並實例化viewController並在其中添加它的視圖。 –

+0

一次只能看到一個視圖。我在委託代碼didFinishLaunchingWithOptions:{....... viewController.view.hidden = TRUE; [self.window setRootViewController:menuController]; \t [self.window.rootViewController.view addSubview:viewController.view]; \t \t [self.window makeKeyAndVisible];} – Lynn