2011-03-14 5 views
0

UITabBarController가있는 응용 프로그램이 있고 각 탭에 UINavigationController가 "첨부되어 있습니다". 이제 탭 1,2 및 4의 navigationViewroller의 rootViewControllers가 세로 방향만을 지원하고 세로 방향으로 회전하라는 메시지가 표시되면 YES를 반환하는 "shouldAutorotateToInterfaceOrientation"구현이 있다고 가정합니다. 그러나 Tab 3에는 navigationController에 가로 방향을 지원하는 일부 viewController가 있습니다.탭을 변경할 때 자동 회전이 무시됩니다.

지금 탭 3에 있고 가로를 지원하는 viewController 중 하나로 이동하면 장치를 켜고 인터페이스가 가로로 변경됩니다. 그러나 가로 모드의 인터페이스로 탭 1,2 또는 4를 누르면 인터페이스가 세로로 다시 변경되지 않고 가로로 유지되지만 표시된 viewController는 분명히 세로 만 지원합니다.

나는 내가 상실한 부분이나 이것이 의도 된 동작인지 여부를 확신 할 수 없으며 tabBarController를 통해 세로보기 viewController로 전환하면 인터페이스 방향을 세로로 다시 전환하고 싶습니다. 전체 계층 구조는 프로그래밍 방식으로 구성됩니다.

감사합니다.

답변

1

내 앱 중 하나에서 탭 항목에 탐색 컨트롤러를 사용하지 않는 것과 동일한 문제가 발생했습니다.

나는 방법 shouldAutorotate에 대한 (이 서브 클래스 화하는 것은 아닙니다 이후)에 UITabBarController가에 대한 카테고리를 만들어 결국

...

@implementation UITabBarController (orientation) 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { 
#if DEBUG 
    NSLog(@"UITabBarController (orientation) -> shouldAutorotateToInterfaceOrientation: [%d]",toInterfaceOrientation); 
#endif 
    //if(toInterfaceOrientation == UIInterfaceOrientationPortrait) return YES; 
// else return [self.selectedViewController shouldAutorotateToInterfaceOrientation:toInterfaceOrientation]; 
    if (self.selectedViewController == [self.viewControllers objectAtIndex:kLibraryStoreTabIndex]) 
     return NO; 


    if(self.selectedViewController == [self.viewControllers objectAtIndex:kContactTabIndex]){ 

     return YES; 
    } 
// rest of the conditions depending of the tab 

return NO; //last option 
} 
+0

흠 난 그냥 범주에 몇 가지 테스트 및 내 shouldAutorotateToInterfaceOrientation 방법은하지 않았다 않았다 장치를 돌리지 않고 탭을 전환 할 때 호출됩니다 (이는 의미가 있습니다). 수동으로 전화 하시겠습니까? – Robin

+0

아니요, 직접 부르지 않았습니다. – Pacu

관련 문제