2011-03-17 1 views
0

방향 변경이 발생하고 뷰 컨트롤러에 변경 사항이 계속 통보되면 루트 뷰 전체와 모든 하위 뷰에 이러한 알림이 수신됩니까? 루트보기와 그 루트보기에 대한 하위보기를 만들었습니다. 하위 뷰의 컨트롤러 (및이 계층 구조의 하위 뷰 컨트롤러)는 장치 방향 변경으로 인해 발생하는 모든 회전 처리를 수신합니까?뷰 컨트롤러 계층 구조 및 장치 방향 변경

이 계층 구조의 중첩이 UISplitViewController의보기이므로 장치 방향 변경 알림이 수신되지 않는다고 생각합니다. 즉 C가 UISplitViewController의 뷰인 뷰 계층 구조에서 A -> B -> C와 같은 것을 본질적으로 가지고 있습니다.

답변

1

방향 변경이 발생하면 창의 첫 번째보기 만 전체 계층 구조와 함께 회전합니다. viewController의 관점에서 보면 첫 번째 뷰의 viewController는 오리엔테이션 변경 이벤트 (및 viewWill/DidAppear 이벤트)와 모든 viewControllers가이를 통해 생성되는 이벤트를 가져옵니다. 산란에 의해 나는 viewController를 uitabbarViewController의 탭으로 사용하거나 네비게이션 컨트롤러에 추가하거나 모달로 표시하는 것을 의미합니다. 즉, 계층 구조의 어떤 곳에서 뷰 콘트롤러의 뷰를 창이나 다른 뷰에 수동으로 추가하면 해당 뷰 콘트롤러는 이벤트를 얻지 못하게된다. why does viewDidAppear not get triggered? 같은 일이 방향에 대한 발생

그래서 2 가지 원인이 있습니다 변경 :

이보기

  • 당신의 uisplitviewController의보기 또는 부모의 밀고 대신 뷰 계층에 수동으로 추가된다 viewcontroller (보기가 회전되지만 이벤트를받지 않음)
  • 보기를 두 번째 자식으로 표시했습니다 (보기가 전혀 회전하지 않음).