2012-05-02 3 views
0

일부 viewControllers가 사용되는 응용 프로그램에서 일하고 있습니다. Landscape/Portrait 모드에서 하나의 뷰를 다른 뷰로 푸시하고 동일한 모드에서 다시 이동하면 shouldAutorotateToInterfaceOrientation 메서드가 on으로 되돌아갑니다.관련 shouldAutorotateToInterfaceOrientation 메서드

같은 단계를 반복하고 두 번째 또는 세 번째보기에서 방향을 변경하고 다시 이동해야 할 경우 shouldAutorotateToInterfaceOrientation 메서드가 호출되지 않습니다. 뷰 컨트롤이 방해받습니다.

동일하게 사용하십시오.

감사합니다, 내가 제대로 질문을 이해한다면

답변

1

, 당신은 shouldAutorotateToInterfaceOrientation이 viewControllers의 스택에 두 번째 또는 세 번째의 ViewController에 호출되는하고자 할 때 장치 변경의 방향입니다.

shouldAutorotateToInterfaceOrientation은 최상위 viewController에서만 호출됩니다. 두 번째 또는 세 번째 viewController 메서드에서 레이아웃 코드를 수행하면 코드가 실행되지 않습니다.

솔루션은 코드에 따라 간단하고 많습니다. 작동 할 것입니다 (Xcode에서 테스트하지 않음). 특정 childViewController에 대한 포인터가있는 경우

for (UIViewController *vc in [self childViewControllers]) 
{ 
    [vc shouldAutorotateToInterfaceOrientation]; 
} 

, 당신은 특별히을 호출 할 수 있습니다처럼 상단의 ViewController의 shouldAutorotateToInterfaceOrientation 방법에 무언가를 추가 할 수 있습니다. 문서에서

참고 :이 방법의

귀하의 구현은 단순히 interfaceOrientation 매개 변수의 값에 따라 NO YES 반환하거나한다. interfaceOrientation 속성 값을 가져 오거나 UIDevice 클래스에서보고하는 방향 값을 확인하지 마십시오. 보기 컨트롤러가 주어진 방향을 지원할 수도 있고 그렇지 않을 수도 있습니다.

어떤 레이아웃을 수행하려면, 당신은 사용할 수 있습니다

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 

희망이 도움이!

관련 문제