2012-10-01 3 views
0

iOS SDK의 View Controller 설명서에 설명 된대로 컨트롤러 포함 패턴을 사용하는 앱에서 작업하고 있습니다.addSubview : 탐색 스택을 다시 씁니다.

컨트롤러 컨테이너를 작성했으며 훌륭하게 작동합니다. 내 컨트롤러는 기본적으로 두 개의 하위보기를 포함하고 있으며 동시에 둘 다 표시하며 사용자가 수행하는 작업에 따라 하나씩 다른 슬라이드를 표시합니다. 훌륭하게 작동합니다.

이제 탐색보기에서이 컨테이너 컨트롤러를 사용하고 싶습니다. 이것은 밀어 부스를 작동시키는 것입니다. 결과적으로 내 포함 된 컨트롤러에서 네비게이션 스택을 사용하고 새 컨트롤러를 켠 다음 사용자가 완료되면 팝업을 표시 할 수 있기를 원합니다.

그러나, 나는 탐색 뷰가 루트 컨테이너로 내 컨테이너 컨트롤러와 인스턴스화되면 상황이 붕괴 것으로 나타났습니다. 특히

, 나는이 발견했습니다 : 아이폰 OS 문서에서

, 컨테이너 컨트롤러는 addChildController 전화 : 다음과 addSubview :를 푸시 세그가 작동하지 않으므로 탐색 스택이 깨지는 것 같습니다.이 모드는 모달처럼 작동합니다. addSubview가 탐색 스택을 재설정하기 때문에이 작업을 수행한다고 생각합니다.

난 [self.navigationController과 pushViewController ...]로 addChildController addSubview와 교체하여이를 확인 하였다. addChildController에 대한 호출을 생략하면 문제가 재현 될 수 있으므로 addSubview에 문제가 있음을 확인했습니다.

이렇게하면 탐색 스택이 제대로 작동합니다. 물론 "가장 최근에 푸시 된"컨트롤러 만 볼 수 있기 때문에 컨테이너 컨트롤러는 그렇지 않습니다.

포함 된 컨트롤러에서 새 컨트롤러를 스택에 푸시하고 사용자가 완료되면 "이전 컨트롤러"를 다시로드하지 않고 스택을 "팝"하고 싶습니다.

모달 세구를 사용하면 이전 컨트롤러가 다시로드됩니다. 푸시 컨트롤러를 사용하지 않습니다.

addSubview의 동작에 대한 문서를 찾을 수없고 탐색 스택에 미치는 영향입니다.

여러분이 쏟아 낼 수있는 빛에 대해 미리 감사드립니다!

답변

0

나는 약간의 문제가 완전히 당신이 무엇을하고 있는지 이해하는 데,하지만 난 싶은 것은 내가 뭘 정확하게라고 생각합니다.

나는 컨테이너 UIViewController를 rootView로 갖는 UINavigationController를 가지고 있습니다. 그 컨트롤러는 정상적인 방법에 따라 아이들을 추가합니다. 그 어린이보기 중 하나가 갑자기 나타날 수있는 다른보기를 푸시합니다. AppDelegate에 메시지 수와이 원한다면 자신에게 rootViewController을 그 밀어보기

하나. 일반적으로 뷰 컨트롤러에 대한 강력한 참조를 유지하는 한, 그 컨트롤러를 소유 한 사람은 제거 할 수 있으며 navigationControllers viewController 배열을 사용하여 마음 속의 콘텐츠를 볼 수 있습니다.

관련 문제