2009-10-03 6 views
4

보기 컨트롤러 (B)를로드하고 내보기 계층 구조에서 해당보기를 사용하는보기 컨트롤러 (A)가 있습니다. A의 뷰 계층 구조에 B의 뷰를 추가하고 viewWillAppear와 같은 이벤트를 수동으로 전달하지 않으면 B 컨트롤러에서이를 처리 할 수 ​​없습니다. 합니다 (viewWillAppear에서 : 문서)뷰 컨트롤러를 뷰 계층 구조에 추가하는 적절한 방법은 무엇입니까?

경고 : 뷰 컨트롤러에 속하는 뷰 계층 직접 뷰에 추가되는 경우, 제어기는도 이 메시지를 수신하지 않을 것이다. 보기 보기 계층에보기를 추가하거나 추가하면 해당보기 컨트롤러는 이고, 연결된보기 컨트롤러는 입니다.이 메시지를 직접 보내야합니다. 보기 컨트롤러를 보내지 않으면 의 관련 애니메이션이 표시되지 않습니다.

보기 컨트롤러를 중첩하는 올바른 방법은 무엇입니까? (NavBarController와 마찬가지입니다.) 이벤트 그룹을 중첩 컨트롤러로 전달해야하는 문제인 경우 전달해야하는 모든 이벤트는 무엇입니까?

답변

4

여기에는 마법의 해결책이 없습니다. 올바른 해결책은 이러한 메시지를 수동으로 보내는 것입니다.

viewWillAppear :/viewDidAppear : 및 viewWillDisappear :/viewDidDisappear : 메시지는 하위보기 컨트롤러에 수동으로 보내야하는 유일한 메시지입니다.

부모보기 컨트롤러에서 네 가지 방법 모두를 구현하고 부모가 메시지를 받고 자식이로드 될 때마다 자식보기 컨트롤러에 동일한 메시지를 보내야합니다.

또한 자식보기 컨트롤러의보기를 추가 할 때 부모의 view.window가 nil이 아닌 경우 viewWillAppear :/viewDidAppear : 메시지를 보내야합니다. 보기를 제거 할 때 부모의 view.window가 nil이 아닌 경우 viewWillDisappear :/viewDidDisappear : 메시지를 보내야합니다.

관련 문제