0

현재 장치 방향에 따라보기 구조가 완전히 다른 iPad 용 앱을 작성 중입니다.장치 방향이 바뀔 때 differnet UIViewController로 전환

응용 프로그램이 세로 인 경우 ECSlidingViewController 라이브러리를 사용하여 왼쪽 및 오른쪽 슬라이딩 메뉴 (예 : 페이스 북 또는 경로)를 지원합니다.

앱이 가로 방향 인 경우 왼쪽 메뉴가 항상 표시되도록 splitviewcontroller를 표시해야합니다.

아무도이 문제에 대한 최상의 해결책을 알고 있습니까? 내가 방향 변경이 감지하지만, 이것은 매우 이상한 결과를 제공 할 때 UIWindow의 RootViewController을 변경 시도

....

답변

1

이 작업을 수행하는 방법은 여러 가지가 있습니다. 일부는 다른 것보다 낫지 만, 대부분 당신의 특정 상황의 요구에 달려 있습니다.

  1. 회전 중에 언급 한대로 rootViewController을 바꿉니다.
  2. 항상 가로와 세로 사이를 회전 할 때 detailViewController을 바꾸려면 UISplitViewController을 사용하고 segue과 함께 사용하려면 replace을 사용하십시오.
  3. 사용/추가 사용자 지정 컨테이너 뷰 컨트롤러를 만들/addChildViewController:removeFromParentViewController:를 사용하여 회전에서 해당 뷰 컨트롤러를 제거

당신이했습니다 어떤에서 선택 3.

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 
    [self.childViewControllers[0].view removeFromSuperView]; 
    [self.childViewControllers[0] removeFromParentViewController]; 

    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) { 
     [self addChildViewController:portraitVC]; 
     [self.view addSubview:portraitVC.view]; 
    } else { 
     [self addChildViewController:landscapeVC]; 
     [self.view addSubview:landscapeVC.view]; 
    } 
} 

의 매우 원유 예 나는 옵션 3이 가장 적합하다고 생각한다. 이 모든 것이 있지만 뷰 컨트롤러를 전환해야한다고 완전히 확신 할 수는 없지만 ECSlidingViewController에 익숙하지 않아 무엇이 제공 될지 확신 할 수 없습니다.

+0

답장을 보내 주셔서 감사합니다. 회전이 감지되면 rootViewController를 재설정하고 싶습니다. 내가 어떻게이 일을 할 수 있는지 아십니까? 내가 그것을 시도했을 때 이상한 겹겹이과 회전을 할 것 같습니다 .... –

+0

문제는 내 ECSlidingViewController 구현의 기본 viewcontroller가 UISplitViewController를 사용할 때 충돌 할 특정 하위 클래스를 확장해야한다는 것입니다. –

+0

위의 제안 된 솔루션 3으로 구현이 변경되어 문제가 해결되었습니다. –

관련 문제