UIViewController が別のビュー コントローラーを提示する場合、提示されたビュー コントローラーが iOS 5 で完了したときにそれ自体を閉じる最も簡単な方法は、次を呼び出すことです。
[[self presentingViewController] dismissViewControllerAnimated:YES completion:NULL];
一方、Apple のView Controller Programming Guideには次のように書かれています。
提示されたビュー コントローラーを閉じるときが来たら、推奨されるアプローチは、提示しているビュー コントローラーにそれを閉じさせることです。つまり、可能な限り、View Controller を提示した同じ View Controller が、それを破棄する責任も負う必要があります。提示されたView Controllerを破棄する必要があることを提示側のView Controllerに通知する方法はいくつかありますが、推奨される方法は委譲です。
これにより、非常に単純なView Controllerのみが提示されている場合でも、新しいプロトコルと委任の作成に固執することを提案するいくつかの回答がここに導かれました. 上記の単一行ではなく、なぜこれがドキュメントの「推奨手法」なのですか? デリゲート/プロトコル手法を使用して記述されたコードの大幅な増加のマイナス面を相殺する利点はありますか? 明らかに、提示されたView Controllerから、提示しているView Controllerに戻す必要がある情報がある場合、委譲は適切な手法です。ただし、情報は委任の理由であり、表示されたビュー コントローラーを画面からきれいに削除するだけではありません。