2010-04-08 4 views
4

UINavigationController 기반 iPad 앱 (시뮬레이터에서 테스트 중)에서 작업하고 있습니다. 탐색 컨트롤러 스택에는 두 개의 UIViewController 만 있습니다. 데모 용으로 SetupController 및 ContentController라고 부릅니다. SetupController는 스택에 ContentController를 푸시합니다.UINavigationBar가 가로로 '뒤로'에 업데이트되지 않습니다.

[self.navigationController pushViewController:contentController animated:YES]; 

콘텐츠를 보는 동안 뒤로 버튼을 눌러 설정 컨트롤러로 돌아갈 수 있습니다. 응용 프로그램이 세로 모드 인 경우 제대로 작동합니다.

그러나 앱이 가로 방향으로 놓여 있고 뒤로 버튼을 누르면 물건이 엉망이됩니다. 뷰 컨트롤러 스택이 올바르게 업데이트되었지만 (예 : SetupController의 뷰가 표시됨) UINavigationBar가 제대로 업데이트되지 않았습니다. ContentController와 연결된 UINavigation 막대 항목은 계속 표시됩니다. SetupCotroller의 예상 UINavigationBar 항목을 보려면 UINavigationBar가 올바른 상태로 움직이는 시점에서 다시 버튼을 두 번 눌러야합니다. 다시 말하지만, 이것은 풍경 모드에서만 발생하며, 인물 모드는 완벽하게 작동합니다.

테스트. 에서 [SetupController viewDidAppear :] 방법은 나는 다음과 같은 디버그 출력

if(self.navigationController.navigationBar.topItem != self.navigationItem) { 
    NSLog(@"wrong nav item!"); 
} else { 
    NSLog(@"correct nav item!"); 
} 

내가 시뮬레이터가 가로 모드 때마다 "잘못된"메시지가

을 추가하고, 세로 모드에 결코 때. ViewControllers와 탐색 항목이나 탐색 모음 자체를 수정하려는 모든 인스턴스에서 모든 viewDidAppear : 메시지를 제거하려고했습니다.

의견이 있으십니까? 나는 내가 여기서 뭔가 잘못하고 있다고 가정하고 있지만, 이것은 나에게 벌레처럼 느껴진다.

답변

6

같은 문제가 발생했습니다. 그것은 이상한,하지만 당신은 스택의 뷰 컨트롤러를 모두 확인해야해야 다음 (모든 것이 제대로 회전에 디스플레이하는 경우에도) 구현 :

  • (BOOL) shouldAutorotateToInterfaceOrientation : (UIInterfaceOrientation) interfaceOrientation { 반환 YES ; }
+0

예. 그것은 그것을 고쳤다. 감사! – eric

관련 문제