2011-09-29 49 views
0

我的應用程序的開頭工作得很好,但我有一個小問題,我無法弄清楚如何解決。將ViewController從堆棧中彈出時的InterfaceOrientation問題

這是一個基於視圖的應用程序,我在我的appDelegate文件中有一個NavigationController,它根據需要推送各種ViewController。走向「前進方向」,一切運作良好,實際上看起來很完美,但我所遇到的問題是,當VC被從堆棧中彈出時。這是我用來展示VC的代碼,然後使用後退按鈕返回。

UINavigationController *iaxNC = [[UINavigationController alloc] init]; 
LogInViewController *logInVC = [[LogInViewController alloc] init]; 
[iaxNC pushViewController:logInVC animated:NO]; 
[logInVC release]; 
[_window addSubview:iaxNC.view]; 
[_window makeKeyAndVisible]; 

加載自己的登錄視圖,然後代碼檢查,看看是否有任何用戶加載設置屏幕前(如果沒有)如下:

setUpVC = [[SetUpViewController alloc] init]; 
setUpVC.firstUse = self.firstUse; 
[self.navigationController pushViewController:setUpVC animated:YES]; 
[setUpVC release]; 

的問題發生時,我從SetUp視圖中點擊後退按鈕返回到LogIn視圖。

我有一個肖像和大部分VC的景觀視圖,這些VC是邁克爾泰森的TPMultiLayoutViewController的子類。縱向視圖被連接爲* portraitView和*視圖,橫向視圖連接爲* landscapeView。

問題是這樣的:

如果我把一個VC進入查看和更改設備的方向我打的後退按鈕在此之前,當我打的「返回」以前VC顯示在其原始格式(即不旋轉到當前方向),它也顯示視圖的左下角位於屏幕的左下角。然後它會「堅持」,直到我再次旋轉設備,然後一切都很好,並按預期運行。

所以事情是我正在通過TPMultiView子類的內容工作,但我並沒有假裝理解它的全部內容(其中可能是我的真實問題),但作爲一個權宜之計解決方案是有辦法當「pushee」的VC彈出時,強制「推動器」VC的視圖以先前的方向出現(儘管簡要說 - 然後允許它一旦顯示就旋轉)?

這有道理嗎?

已解決!問題是我在LogInVC中包含了我自己的viewWillAppear方法,但我沒有調用[super viewWillAppear],所以超類的影響從來沒有真正起作用,是它!感謝您的意見。我可以推薦子類BTW中的TPMultiView子站很好地工作。

+0

你實現'shouldAutoRotateToInterfaceOrientation:'你的視圖控制器? –

+0

它們都設置爲返回'!= UIInterfaceOrientationPortraitUpsideDown'。正如我所說的,如果我只是推動所有東西(比如再次推入LogInVC而不是通過後退按鈕返回),它就可以正常工作。 – Bertie

回答

0

您應該首先驗證您對shouldAutoRotateToInterfaceOrientation:的實施對所有視圖控制器是否正確。

然後確保您的視圖控制器的視圖設置了合適的autoresizingMask。如果您在Interface Builder中創建了視圖控制器及其視圖,則應在其中設置調整大小屏蔽。

否則你-loadView-viewDidLoad方法,你應該有這樣一行:

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | 
          UIViewAutoresizingFlexibleHeight; 
+0

所有視圖都會自動調整子視圖的檢查。包含文本字段的滾動視圖被綁定到左下角,所以我已經將其更改爲左上角,至少現在看起來並不太糟糕,但它仍然沒有應用TPMultiView子類的效果。在某些時候,我將不得不深入到ACTUAL問題的底部,但是我確信它會*工作*如果在SetUpVC彈出窗口後可以執行以下操作:1.強制LogIn VC顯示自身在之前的方向上立即2.讓它旋轉到當前的設備方向。 – Bertie

+0

我應該補充一點,子類的要點是不必依賴Autoresizing,這是我試圖避免的,因爲兩種佈局完全不同。 – Bertie

+0

排序邁克。感謝您的意見。 – Bertie