2013-05-20 1 views
4

사용자 정의 컨테이너보기 컨트롤러를 작성하려면 Apple's guide을 따르고 있습니다. 그것은 하나의 짜증나는 문제를 제외하고는 상자 밖으로 잘 작동하는 것 같습니다.사용자 정의 컨테이너보기 컨트롤러에서 외관 메서드 호출을 올바르게 호출합니다.

는 정확히 어떻게 내가 어떤 시간에 내 아이 뷰 컨트롤러가 viewWillAppear:viewDidAppear: 전화 (및 disappear 대응)을받을 수 지정합니까?

부모님이나 그와 비슷한 것으로 미끄러지는 멋진 애니메이션이 있다고 가정 해 보겠습니다. 당연히 애니메이션의 시작 부분에 viewWillAppear:YES을 호출하고 끝에 viewDidAppear:YES을 호출하고 싶습니다. 그러나 기본적으로 viewWillAppear:NOviewDidAppear:NO이 모두 부모보기에 내 자녀의보기가 추가되면 동시에 호출됩니다.

는 지금, 나는 아이폰 OS 6에 추가 beginAppearanceTransition:animated:endAppearanceTransition 방법이있다 알지만, 아이폰 OS (5) 또한 그들은 고급의 경우에 사용되는 의미하는 것 같다 지원 싶습니다

을 컨테이너에 자식을 추가하면 컨테이너는 자동으로 이 전달되어야하는 이벤트가 발생하면 자식보기 컨트롤러에 자동으로 순환 및 모양 콜백을 전달합니다. 이 모든 이벤트가 올바르게 전송되도록하기 때문에 일반적으로 원하는 동작입니다. 그러나 때로는 기본 동작이 해당 컨테이너를 컨테이너에 적합하지 않은 순서로 보낼 수 있습니다. 예를 들어 여러 자식이 동시에 뷰 상태를 변경하는 경우 모양 콜백이 모두 논리적 순서로 동시에 발생하도록 변경 사항을 통합 할 수 있습니다. 이렇게하려면 모양 또는 순환 콜백 책임에 대해 을 수행하도록 컨테이너 클래스를 수정합니다.

이 적절한 시간에 외관 메소드를 호출 transitionFromViewController:toViewController:duration:options:animations:completion: 방법은, 그러나 그것은 행동이보기 컨트롤러를 필요로하며, 일반적으로 여기 장소에서 보인다. 물론, 나는 속임수를 써서 가짜 아이에게 먹일 수 있지만, 진지하게 ...

내가 빠진 것이 있습니까? 어떤 도움이라도 대단히 감사하겠습니다.

답변

3

그리고 대답은 좀 재미 있습니다.

iOS 6 이상 버전에서는 beginAppearanceTransition:animated:endAppearanceTransition을 사용할 수 있지만 실제로는 그렇지 않습니다. 이 방법도에서 iOS 5에서 사용하는 잘 있습니다

- (void)beginAppearanceTransition:(BOOL)isAppearing animated:(BOOL)animated __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0); 
- (void)endAppearanceTransition __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0); 

This question's answer

도 같은 일을 말한다. 케이스 해결!

관련 문제