2012-09-04 3 views
2

나는 이것을 위해 모든 곳을 보았습니다. 그래서 최후의 수단으로 나는 질문해야한다고 생각했습니다.Storyboard에서 NavigationController를 닫는 방법?

저는 XCode에서 Storyboard를 사용하고 있으며 내 초기보기로 탐색 컨트롤러가 있습니다. 이 탐색 컨트롤러의 루트보기는 테이블보기입니다. 이 테이블 뷰에는 네비게이션 컨트롤러에 모달 세그 (modal segue)를 통해 뷰를 수평 방향으로 넘기는 버튼이 네비게이션 바에 있습니다. 이 컨트롤러의 루트보기는 내지도보기입니다. 자, [self dismissViewControllerAnimated:YES completion:nil]을 사용하여이지도보기를 닫으려고해도 작동하지 않습니다. 네비게이션 컨트롤러를 꺼내면됩니다. 그래서 dismissViewController가 내비게이션 컨트롤러에 전달되고 아무것도하지 않는 것 같습니다. 네비게이션 컨트롤러에 대한 클래스를 구현하여 호출을 처리하고 전달할 수 있다는 것을 알고 있지만 절대적으로 필요한 경우가 아니면이를 수행하고 싶지 않습니다. 나는 그 반대의 경우도 마찬가지 플립 수평 애니메이션을 사용하여지도보기로 테이블보기 사이를 전환 할 수있는 방법이 필요

  1. :

    그래서이 문제를 해결합니다.

  2. 두보기에서 모두 내비게이션 컨트롤러가 있어야합니다. 동일한 것일 수도 있고 다른 것일 수도 있습니다. 모든 전환은 뒤집기를 수평 적으로 전환하지 않는 푸시 일 것이므로 동일한 것을 사용하는 방법을 찾지 못하는 것 같습니다.

미리 도움을 청하십시오!

+0

'dismissViewController' 대신'dismissModalViewController'를 사용합니까? – jonkroll

+0

내 app iOS 6와 호환되며, dismissModalViewController가 사용되지 않습니다. – WiseOlMan

+0

안녕하세요, segue를 탐색 컨트롤러로 모델링 할 때 새 탐색 컨트롤러의 새보기 컨트롤러에서보기 컨트롤러의 원래 컨트롤러에 대한 참조를 어떻게 얻었습니까? 왜냐하면 내가 prepareforsegue를 할 때, segue.destinationViewController는 네비게이션 컨트롤러를 반환하고 컨트롤러를 보지 못하기 때문입니다. – coolcool1994

답변

3

[self dismissViewControllerAnimated:YES completion:nil]으로 전화 할 때 self은 누구입니까?

이 메시지의 수신자는 해제하려는 모달보기 컨트롤러를 제공 한보기 컨트롤러 여야합니다. 제공된 뷰 컨트롤러 또는 (콘트롤러 중 하나 인 UINavigationController과 같은 컨테이너 뷰 컨트롤러의 경우) UIKit은 올바른 작업을 시도하지만 항상 성공하지는 않습니다.

self을 참조하면지도보기가 포함 된보기 컨트롤러이므로 presentingViewController 속성을 가져 와서 dismissViewControllerAnimated:completion:이라고 불러야하는 개체를 가져올 수 있습니다. (네비게이션 컨트롤러를 사용해야 할 경우 navigationController 속성을 사용하십시오.)

+0

이러한 속성을 지적 해 주셔서 감사합니다.하지만 불행히도 여전히 작동하지 않습니다. 이것이 내가 시도한 것이다. 지도 뷰의 버튼에서 코드를'[[self navigationController] presentingViewController] dismissViewControllerAnimated : YES completion : nil]'으로 변경했으나 작동하지 않았습니다. 나는 또한 [[self navigationController] dismissViewControllerAnimated : YES completion : nil]'도 시도했는데, 역시 작동하지 않았다. 어떤 제안? – WiseOlMan

+0

버튼을 눌렀을 때 버튼이 눌려 졌을 때 혼란스러워서 미안하지만 분명히 내 기능이 작동하지 않았다. 이전에 작동하고 있었음에도 불구하고 세 가지 옵션 모두'[self presentingViewController] dismissViewControllerAnimated : YES completion : nil] '또는 [[self navigationController] dismissViewControllerAnimated : YES completion : nil]'또는 가장 쉬운 방법 인'[self dismissViewControllerAnimated : YES completion : nil]'은 네비게이션 컨트롤러를 거쳐 모달 뷰를 적절히 닫습니다. 도움을 주셔서 감사합니다. 몇 가지 더 많은 트릭을 배웠습니다 : D – WiseOlMan

관련 문제