긴 제목에 대해 사과 하긴하지만 실제로는 내가 말할 수있는 가장 정확하고 설명이 가장 짧은 버전입니다.사용자 지정 컨테이너보기 컨트롤러에서 포함 된 컨테이너보기 컨트롤러의 자식에게 메시지 전달?
iOS 5 및 스토리 보드로 작업하는 맞춤 segue 유형으로 맞춤 컨테이너보기 컨트롤러를 구현하고 있습니다. 또한 UINavigationControllerDelegate와 비슷한 기능을하는 포함 된 뷰 컨트롤러에 대한 대리자 프로토콜을 제공합니다. 현재, 특정 작업을 수행하기 위해 알아야 할 내 맞춤 세그먼트와 관련된 조건을 세그먼트보기 하위 뷰 컨트롤러에 알려주는 사용자 지정 컨테이너에서 대리인 메시지를 보내고 있습니다.
이것은 .h 파일의 프로토콜을 준수하도록 지정할 수있는 내 자신의 UIViewController 하위 클래스로 충분히 간단합니다.
그러나 내 사용자 지정 컨테이너의 포함 된보기 컨트롤러 (예 : UINavigationController, UITabBarController)가 기본 제공 컨테이너 자체 인 경우 전송하는 대리인 메시지가 해당 컨테이너에 반드시 맞지는 않지만 컨테이너가 현재 표시하고있는 활성 자식 뷰 컨트롤러 내장 된 컨테이너는 보통 view(Will|Did)(Disa|A)ppear
콜을 아이들에게 전달하지만 내 전달 메시지를 내 사용자 정의 메시지로 확장하는 일반적인 방법은 보이지 않습니다.
신속하고 지저분한 솔루션은 기본 제공 컨테이너를 서브 클래스 화하고 여기에 대리인 메시지 전달을 추가하는 것입니다. 예를 들어, MyTabBarController
은 위임 프로토콜을 따르고 위임 메시지를 selectedViewController
으로 전달합니다. 다른 방법으로는 사용자 정의 컨테이너에 포함 된보기 컨트롤러가 자체 컨테이너 유형이지만, 더 끔직하고 언젠가 내 사용자 정의 컨테이너 안에 중첩 될 수있는 미래의 컨테이너 유형을 고려할 수없는 경우 능동적으로 스니핑하는 것입니다.
이 전체 맞춤형 봉쇄 배치는 현재 사용중인 응용 프로그램에만 한정되어 있으므로 요구 사항이 무엇인지 알기 때문에 해킹 할 수 있습니다. 은이 일반 작업을 수행하려면이 필요하지만 따르고 싶습니다. 미래의 애플 리케이션에서 잠재적 인 재사용을 통해 미래에 훨씬 더 일반적으로 만들 필요가있는 경우를 대비하여이 영역에서 좋은 설계 연습을하십시오.
그럼 제가 이미 설명한 두 가지 해결책을 뛰어 넘는 제안은 무엇입니까?
Apple이 동의 한 것처럼 보입니다. 이 페이지 하단의 http://developer.apple.com/library/ios/ipad/#featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllerers/CreatingCustomContainerViewControllers.html#//apple_ref/doc/uid/TP40007457-CH18-SW13을 참조하십시오. – leftspin