当 UIViewController 呈现另一个视图控制器时,呈现的视图控制器在 iOS 5 下关闭自身的最简单方法是调用:
[[self presentingViewController] dismissViewControllerAnimated:YES completion:NULL];
另一方面,Apple 的View Controller Programming Guide说:
当需要关闭呈现的视图控制器时,首选的方法是让呈现的视图控制器关闭它。换句话说,只要有可能,呈现视图控制器的同一个视图控制器也应该负责解除它。尽管有几种技术可以通知呈现视图控制器其呈现的视图控制器应该被解除,但首选技术是委托。
这导致这里的一些答案建议坚持制定新的协议和委托,即使只呈现一个非常简单的视图控制器。为什么这是文档的“首选技术”而不是上面的单行?使用委托/协议技术编写的代码大量增加的缺点是否有任何抵消优势?显然,如果需要将来自呈现视图控制器的信息传递回呈现视图控制器委托是一种很好的技术。然而,信息是委托的原因,而不是简单地从屏幕上删除呈现的视图控制器。