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 に対するこの回答に感謝します。)
モーダルビューコントローラー
ビューコントローラーがモーダルで表示されている場合、次の呼び出しによって(2番目のビューコントローラーから)ビューコントローラーを終了できます
// Swift
self.dismiss(animated: true, completion: nil)
// Objective-C
[self dismissViewControllerAnimated:YES completion:nil];
ドキュメントは言います、
提示するビューコントローラは、提示したビューコントローラを閉じる責任があります。提示されたビューコントローラー自体でこのメソッドを呼び出すと、UIKitは提示されたビューコントローラーに破棄の処理を要求します。
したがって、提示されたビューコントローラーがそれ自体を呼び出すように機能します。ここに完全な例があります。
代議員
OPの質問は、デリゲートを使用してビューを却下することの複雑さについてでした。
この時点では、通常はナビゲーションコントローラーまたはモーダルビューコントローラーがあるため、デリゲートを使用する必要はありませんが、将来デリゲートパターンを使用する必要がある場合は、更新を追加します。
presentingViewController
ていることを指すので、使用してもほとんど役に立たないことに注意してください。その場合、あなたはまったく手に入れることができなくなります。しかし、その場合でも機能します。私の提案は、Appleが修正するまでそれを使い続けることです。UINavigationController
self
presentingViewController
[self dismissViewControllerAnimated:completion]