2010-02-08 4 views
2

내 iPhone 응용 프로그램에는 모달로 표시 할 두 개의보기 컨트롤러가 있습니다. 첫 번째 (A)를 표시하는 루트 컨트롤러가 있고 두 번째 (B)를 표시하는 루트 컨트롤러가 있습니다. 그런 다음 A와 B를 한꺼번에 무시하고 싶습니다.이 작업은 루트 컨트롤러에서 dismiss… 메서드를 호출하여 수행합니다. 문서에서는이 경우 제어기 A와 B 모두가 없어지는 것을 알 수 있습니다. 두 제어기 모두 화면에서 실제로 사라지지만 A를 검사하면 해당 modalViewController 속성이 설정되어 있고 나중에 B를 표시하려고 다시 시도 할 때 A에서 아무 일도 일어나지 않습니다. 화면에 A를 표시하기 전에 A에 dismissModalViewControllerAnimated:NO을 호출하여이 상황을 해결했지만 해킹이 아니라 실제 해결 방법입니다. 무슨 일이야, 내가 뭘 잘못 했니?여러 모달 컨트롤러 닫기

답변

1

흠. 나는이 상황에 아무런 문제가 없었다.

위임자와 프로토콜을 사용하여이를 구현했습니다. 해고를 처리 한 부모에게는 dismissMe가, 부모에게는 다시 자식을 가리키는 변수가 있습니다. 루트가 A를 설정할 때 A는 루트가 그 대리인이라고 말했고, 위 경우 A 설정 B.

B가 완료되면 [delegate dismissMe : self]를 보냈다. A dismissMe : B가 해산되지 않은 것을 기각하고, [delegate dismissM : self]를 보냈습니다. 루트의 해산 : 그럼 A는 해산되지 않았습니다. 눈에 보이는 효과는 B가 루트 권한을 올바르게 부여하는 것입니다.

요청하면 내 자식 repo에서 소스를 발굴 할 수 있습니다. 그 애플 리케이션의 워크 플로우가 더 복잡 해지면 나는 다른 계획에 갔다.

+0

이 출처를 발굴 해줄 것을 요청하면서이 문제도 발생했습니다. –

관련 문제