iOS SDK의 View Controller 설명서에 설명 된대로 컨트롤러 포함 패턴을 사용하는 앱에서 작업하고 있습니다.addSubview : 탐색 스택을 다시 씁니다.
컨트롤러 컨테이너를 작성했으며 훌륭하게 작동합니다. 내 컨트롤러는 기본적으로 두 개의 하위보기를 포함하고 있으며 동시에 둘 다 표시하며 사용자가 수행하는 작업에 따라 하나씩 다른 슬라이드를 표시합니다. 훌륭하게 작동합니다.
이제 탐색보기에서이 컨테이너 컨트롤러를 사용하고 싶습니다. 이것은 밀어 부스를 작동시키는 것입니다. 결과적으로 내 포함 된 컨트롤러에서 네비게이션 스택을 사용하고 새 컨트롤러를 켠 다음 사용자가 완료되면 팝업을 표시 할 수 있기를 원합니다.
그러나, 나는 탐색 뷰가 루트 컨테이너로 내 컨테이너 컨트롤러와 인스턴스화되면 상황이 붕괴 것으로 나타났습니다. 특히
, 나는이 발견했습니다 : 아이폰 OS 문서에서
, 컨테이너 컨트롤러는 addChildController 전화 : 다음과 addSubview :를 푸시 세그가 작동하지 않으므로 탐색 스택이 깨지는 것 같습니다.이 모드는 모달처럼 작동합니다. addSubview가 탐색 스택을 재설정하기 때문에이 작업을 수행한다고 생각합니다.
난 [self.navigationController과 pushViewController ...]로 addChildController addSubview와 교체하여이를 확인 하였다. addChildController에 대한 호출을 생략하면 문제가 재현 될 수 있으므로 addSubview에 문제가 있음을 확인했습니다.이렇게하면 탐색 스택이 제대로 작동합니다. 물론 "가장 최근에 푸시 된"컨트롤러 만 볼 수 있기 때문에 컨테이너 컨트롤러는 그렇지 않습니다.
포함 된 컨트롤러에서 새 컨트롤러를 스택에 푸시하고 사용자가 완료되면 "이전 컨트롤러"를 다시로드하지 않고 스택을 "팝"하고 싶습니다.
모달 세구를 사용하면 이전 컨트롤러가 다시로드됩니다. 푸시 컨트롤러를 사용하지 않습니다.
addSubview의 동작에 대한 문서를 찾을 수없고 탐색 스택에 미치는 영향입니다.
여러분이 쏟아 낼 수있는 빛에 대해 미리 감사드립니다!