Swift 3 업데이트
나는 현재 (제공된) View Controller를 무시하고 싶었습니다. 나는 같은 목적으로 여기에 오는 모든 사람들을 위해이 대답을 만들고 있습니다.
네비게이션 컨트롤러
내비게이션 컨트롤러를 사용하는 경우 매우 쉽습니다.
이전 뷰 컨트롤러로 돌아갑니다.
// Swift
self.navigationController?.popViewController(animated: true)
// Objective-C
[self.navigationController popViewControllerAnimated:YES];
루트 뷰 컨트롤러로 돌아갑니다.
// Swift
self.navigationController?.popToRootViewController(animated: true)
// Objective-C
[self.navigationController popToRootViewControllerAnimated:YES];
( 이 답변 덕분에 Objective-C에 대한 에 .)
모달 뷰 컨트롤러
뷰 컨트롤러가 모달로 표시되면 다음을 호출하여 두 번째 뷰 컨트롤러에서 해제 할 수 있습니다.
// Swift
self.dismiss(animated: true, completion: nil)
// Objective-C
[self dismissViewControllerAnimated:YES completion:nil];
설명서를 말한다
프레젠테이션 뷰 컨트롤러는 자신이 제시 한 뷰 컨트롤러를 해제 할 책임이 있습니다. 제시된 뷰 컨트롤러 자체에서이 메서드를 호출하면 UIKit은 제시 뷰 컨트롤러에게 해제를 처리하도록 요청합니다.
따라서 제시된 뷰 컨트롤러가 자체적으로 호출하도록 작동합니다. 다음 은 전체 예입니다.
대표자
OP의 질문은 델리게이트를 사용하여 뷰를 무시하는 복잡성에 관한 것이 었습니다.
지금까지는 일반적으로 내비게이션 컨트롤러 나 모달 뷰 컨트롤러가 있으므로 델리게이트 를 사용할 필요가 없었지만 나중에 델리게이트 패턴 을 사용해야 하는 경우 업데이트를 추가하겠습니다.
presentingViewController
하는 것은UINavigationController
ifself
가 하나에 포함되어 있음 을 나타내므로 거의 쓸모가 없습니다 . 어떤 경우에는 전혀 얻을 수 없습니다presentingViewController
. 그러나이 경우[self dismissViewControllerAnimated:completion]
에도 여전히 작동합니다. 내 제안은 Apple이 고칠 때까지 계속 사용하는 것입니다.