2010-08-23 2 views
0

기본보기가있는 대형 응용 프로그램이 있는데,이를 루트보기라고하며 프로그램 제어를 위해 맨 위에 도구 모음이 있습니다. "루트"보기를 오버레이하지만 도구 모음을 그대로 두는 추가보기가 많이 있습니다 - "루트"보기에 표시되는 하위보기를 제어하는 ​​팝 오버 메뉴가 있습니다. splitview 컨트롤러를 사용하고 있지 않습니다.자동 회전 ipad 하위보기

자원을 절약하기 위해 처음으로 기능을 메뉴에서 선택하면 다른 하위보기가 초기화됩니다. 모든 하위보기는 IB로 디자인되었습니다. ipad가 세로 모드에있을 때 하위 메뉴가 처음 선택되면 모든 자동 회전이 제대로 작동하지만 응용 프로그램이 처음 시작될 때 ipad가 가로 방향 일 때 서브보기가 처음 실행되면 회전하지 않고 표시됩니다. 클리핑 된 인물 모드. 그들은 iPad가 회전 된 것을 알지 못합니다.

"root"viewDidLoad 메서드에서 모든 하위 뷰를 초기화하면 시작될 때 ipad의 방향에 관계없이 모든 하위 뷰가 올바르게 회전합니다. 그래서 "root"뷰가 보이기 전에 서브 뷰를 초기화하면 모든 것이 잘됩니다. "루트"보기가 표시되면 초기화 한 경우 하위보기가 자동으로 회전하지 않는 것처럼 보입니다.

관련 코드가 많으므로이 내용을 충분히 설명하면 더 많은 경험이나 통찰력을 가진 사람이 올바른 방향으로 나를 안내 할 수 있습니다.

감사 짐

답변

2

짐, 당신의 호출함으로써 메인 UIWindow, 당신이 그 (것)이 뷰가 장치의 초기 방향에 의해 영향을받는 방법에 영향을 줄 수 있습니다 추가 한 순서의 변화에 ​​하위 뷰를 추가. 예를 들어, (코드 생성) 탐색 컨트롤러 (IB에서 생성)보기 컨트롤러와 애플리케이션에서 다음 코드는 초기 방향에 관계없이 정확하게 표시 :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
     UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; 

     [self.window addSubview:navigationController.view]; 
     [self.window addSubview:viewController.view]; 
     [self.window makeKeyAndVisible]; 

     return YES; 
} 

을 그러나 다음 조각

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; 

     [self.window addSubview:viewController.view]; 
     [self.window addSubview:navigationController.view]; 
     [self.window makeKeyAndVisible]; 

     return YES; 
} 

난 당신이 파단을 추가하는 순서를 변경하려고 할 것 : 응용 프로그램이합니다 (addSubview의 순서 창에 호출주의) 가로 모드에서 시작할 때 코드가 엉망이 될 것입니다. 희망이 도움이!